// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , respawning_time_delay_min , respawning_time_delay_max ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export def_difficulty_level , difficulty_level ; export rudestroyedBuildings ; export AIDepotDest ; export randomedColors ; export sideP1 , sideP2 , sideP3 , sideP4 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; export def_Tech_Level , def_upgrade_tl , tech_level , initial_level ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 25
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 23
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 26
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 24
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 205
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 1 , 2 , 3 , 0 , 0 , 0 , 0 , 4 ] ;
  70: LD_ADDR_EXP 25
  74: PUSH
  75: LD_INT 1
  77: PUSH
  78: LD_INT 2
  80: PUSH
  81: LD_INT 3
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 4
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 23
 113: PUSH
 114: LD_INT 0
 116: PUSH
 117: LD_INT 0
 119: PUSH
 120: LD_INT 0
 122: PUSH
 123: LD_INT 0
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 1 , 0 , 0 , 0 , 1 , 0 , 1 ] ;
 148: LD_ADDR_EXP 26
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 1
 158: PUSH
 159: LD_INT 0
 161: PUSH
 162: LD_INT 0
 164: PUSH
 165: LD_INT 0
 167: PUSH
 168: LD_INT 1
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 1
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 , 2 ] ] ;
 187: LD_ADDR_EXP 24
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: LD_INT 2
 197: PUSH
 198: EMPTY
 199: LIST
 200: LIST
 201: PUSH
 202: EMPTY
 203: LIST
 204: ST_TO_ADDR
// end ; for i := 1 to 8 do
 205: LD_ADDR_VAR 0 2
 209: PUSH
 210: DOUBLE
 211: LD_INT 1
 213: DEC
 214: ST_TO_ADDR
 215: LD_INT 8
 217: PUSH
 218: FOR_TO
 219: IFFALSE 257
// if Multiplayer_GetPlayerIsSpec ( i ) then
 221: LD_VAR 0 2
 225: PPUSH
 226: CALL_OW 530
 230: IFFALSE 255
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 232: LD_ADDR_EXP 25
 236: PUSH
 237: LD_EXP 25
 241: PPUSH
 242: LD_VAR 0 2
 246: PPUSH
 247: LD_INT 0
 249: PPUSH
 250: CALL_OW 1
 254: ST_TO_ADDR
 255: GO 218
 257: POP
 258: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 259: LD_ADDR_EXP 28
 263: PUSH
 264: LD_INT 0
 266: PUSH
 267: LD_INT 0
 269: PUSH
 270: LD_INT 0
 272: PUSH
 273: LD_INT 0
 275: PUSH
 276: LD_INT 0
 278: PUSH
 279: LD_INT 0
 281: PUSH
 282: EMPTY
 283: LIST
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: LIST
 289: ST_TO_ADDR
// for i := 1 to 8 do
 290: LD_ADDR_VAR 0 2
 294: PUSH
 295: DOUBLE
 296: LD_INT 1
 298: DEC
 299: ST_TO_ADDR
 300: LD_INT 8
 302: PUSH
 303: FOR_TO
 304: IFFALSE 351
// if Side_Positions [ i ] then
 306: LD_EXP 25
 310: PUSH
 311: LD_VAR 0 2
 315: ARRAY
 316: IFFALSE 349
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 318: LD_ADDR_EXP 28
 322: PUSH
 323: LD_EXP 28
 327: PPUSH
 328: LD_EXP 25
 332: PUSH
 333: LD_VAR 0 2
 337: ARRAY
 338: PPUSH
 339: LD_VAR 0 2
 343: PPUSH
 344: CALL_OW 1
 348: ST_TO_ADDR
 349: GO 303
 351: POP
 352: POP
// Team_Game := Side_Teams [ your_side ] ;
 353: LD_ADDR_EXP 27
 357: PUSH
 358: LD_EXP 23
 362: PUSH
 363: LD_OWVAR 2
 367: ARRAY
 368: ST_TO_ADDR
// if Multiplayer then
 369: LD_OWVAR 4
 373: IFFALSE 429
// begin def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 375: LD_ADDR_EXP 2
 379: PUSH
 380: LD_INT 1
 382: PPUSH
 383: CALL_OW 426
 387: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 388: LD_ADDR_EXP 3
 392: PUSH
 393: LD_INT 2
 395: PPUSH
 396: CALL_OW 426
 400: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 401: LD_ADDR_EXP 6
 405: PUSH
 406: LD_INT 10
 408: PPUSH
 409: CALL_OW 426
 413: ST_TO_ADDR
// def_difficulty_level := GetMultiplayerSetting ( 17 ) ;
 414: LD_ADDR_EXP 37
 418: PUSH
 419: LD_INT 17
 421: PPUSH
 422: CALL_OW 426
 426: ST_TO_ADDR
// end else
 427: GO 465
// begin Randomize ;
 429: CALL_OW 10
// def_amount_of_people = 3 ;
 433: LD_ADDR_EXP 2
 437: PUSH
 438: LD_INT 3
 440: ST_TO_ADDR
// def_difficulty_level = 2 ;
 441: LD_ADDR_EXP 37
 445: PUSH
 446: LD_INT 2
 448: ST_TO_ADDR
// def_skill_level = 3 ;
 449: LD_ADDR_EXP 3
 453: PUSH
 454: LD_INT 3
 456: ST_TO_ADDR
// def_shared_vision = 1 ;
 457: LD_ADDR_EXP 6
 461: PUSH
 462: LD_INT 1
 464: ST_TO_ADDR
// end ; number_of_people := [ 3 , 5 , 7 , 10 ] [ def_amount_of_people + 1 ] ;
 465: LD_ADDR_EXP 11
 469: PUSH
 470: LD_INT 3
 472: PUSH
 473: LD_INT 5
 475: PUSH
 476: LD_INT 7
 478: PUSH
 479: LD_INT 10
 481: PUSH
 482: EMPTY
 483: LIST
 484: LIST
 485: LIST
 486: LIST
 487: PUSH
 488: LD_EXP 2
 492: PUSH
 493: LD_INT 1
 495: PLUS
 496: ARRAY
 497: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 498: LD_ADDR_EXP 12
 502: PUSH
 503: LD_INT 3
 505: PUSH
 506: LD_INT 5
 508: PUSH
 509: LD_INT 6
 511: PUSH
 512: LD_INT 7
 514: PUSH
 515: EMPTY
 516: LIST
 517: LIST
 518: LIST
 519: LIST
 520: PUSH
 521: LD_EXP 3
 525: PUSH
 526: LD_INT 1
 528: PLUS
 529: ARRAY
 530: ST_TO_ADDR
// difficulty_level := [ 5 , 7 , 8 , 10 ] [ def_difficulty_level + 1 ] ;
 531: LD_ADDR_EXP 38
 535: PUSH
 536: LD_INT 5
 538: PUSH
 539: LD_INT 7
 541: PUSH
 542: LD_INT 8
 544: PUSH
 545: LD_INT 10
 547: PUSH
 548: EMPTY
 549: LIST
 550: LIST
 551: LIST
 552: LIST
 553: PUSH
 554: LD_EXP 37
 558: PUSH
 559: LD_INT 1
 561: PLUS
 562: ARRAY
 563: ST_TO_ADDR
// end ;
 564: LD_VAR 0 1
 568: RET
// function init_map ; var i , j ; begin
 569: LD_INT 0
 571: PPUSH
 572: PPUSH
 573: PPUSH
// depot_def := [ [ 26 , 2 , 3 ] , [ 36 , 3 , 3 ] , [ 45 , 3 , 3 ] , [ 58 , 3 , 3 ] ] ;
 574: LD_ADDR_EXP 29
 578: PUSH
 579: LD_INT 26
 581: PUSH
 582: LD_INT 2
 584: PUSH
 585: LD_INT 3
 587: PUSH
 588: EMPTY
 589: LIST
 590: LIST
 591: LIST
 592: PUSH
 593: LD_INT 36
 595: PUSH
 596: LD_INT 3
 598: PUSH
 599: LD_INT 3
 601: PUSH
 602: EMPTY
 603: LIST
 604: LIST
 605: LIST
 606: PUSH
 607: LD_INT 45
 609: PUSH
 610: LD_INT 3
 612: PUSH
 613: LD_INT 3
 615: PUSH
 616: EMPTY
 617: LIST
 618: LIST
 619: LIST
 620: PUSH
 621: LD_INT 58
 623: PUSH
 624: LD_INT 3
 626: PUSH
 627: LD_INT 3
 629: PUSH
 630: EMPTY
 631: LIST
 632: LIST
 633: LIST
 634: PUSH
 635: EMPTY
 636: LIST
 637: LIST
 638: LIST
 639: LIST
 640: ST_TO_ADDR
// for i in depot_def do
 641: LD_ADDR_VAR 0 2
 645: PUSH
 646: LD_EXP 29
 650: PUSH
 651: FOR_IN
 652: IFFALSE 726
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 5 ) ] ] ;
 654: LD_ADDR_EXP 31
 658: PUSH
 659: LD_EXP 31
 663: PUSH
 664: LD_VAR 0 2
 668: PUSH
 669: LD_INT 1
 671: ARRAY
 672: PPUSH
 673: LD_VAR 0 2
 677: PUSH
 678: LD_INT 3
 680: ARRAY
 681: PPUSH
 682: LD_INT 10
 684: PPUSH
 685: CALL_OW 272
 689: PUSH
 690: LD_VAR 0 2
 694: PUSH
 695: LD_INT 2
 697: ARRAY
 698: PPUSH
 699: LD_VAR 0 2
 703: PUSH
 704: LD_INT 3
 706: ARRAY
 707: PPUSH
 708: LD_INT 5
 710: PPUSH
 711: CALL_OW 273
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: PUSH
 720: EMPTY
 721: LIST
 722: ADD
 723: ST_TO_ADDR
 724: GO 651
 726: POP
 727: POP
// end ;
 728: LD_VAR 0 1
 732: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
 733: LD_INT 0
 735: PPUSH
 736: PPUSH
 737: PPUSH
// if def_shared_vision then
 738: LD_EXP 6
 742: IFFALSE 786
// begin ChangeSideFog ( sideP2 , sideP1 ) ;
 744: LD_EXP 43
 748: PPUSH
 749: LD_EXP 42
 753: PPUSH
 754: CALL_OW 343
// ChangeSideFog ( sideP3 , sideP1 ) ;
 758: LD_EXP 44
 762: PPUSH
 763: LD_EXP 42
 767: PPUSH
 768: CALL_OW 343
// ChangeSideFog ( sideP4 , sideP1 ) ;
 772: LD_EXP 45
 776: PPUSH
 777: LD_EXP 42
 781: PPUSH
 782: CALL_OW 343
// end ; end ;
 786: LD_VAR 0 1
 790: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
 791: LD_INT 0
 793: PPUSH
 794: PPUSH
 795: PPUSH
 796: PPUSH
// result := [ ] ;
 797: LD_ADDR_VAR 0 6
 801: PUSH
 802: EMPTY
 803: ST_TO_ADDR
// for i := 1 to count do
 804: LD_ADDR_VAR 0 7
 808: PUSH
 809: DOUBLE
 810: LD_INT 1
 812: DEC
 813: ST_TO_ADDR
 814: LD_VAR 0 1
 818: PUSH
 819: FOR_TO
 820: IFFALSE 1216
// begin uc_direction := Rand ( 0 , 5 ) ;
 822: LD_ADDR_OWVAR 24
 826: PUSH
 827: LD_INT 0
 829: PPUSH
 830: LD_INT 5
 832: PPUSH
 833: CALL_OW 12
 837: ST_TO_ADDR
// if commander then
 838: LD_LOC 1
 842: IFFALSE 951
// begin hc_name := mp_sides_players_names [ uc_side ] ;
 844: LD_ADDR_OWVAR 26
 848: PUSH
 849: LD_OWVAR 19
 853: PUSH
 854: LD_OWVAR 20
 858: ARRAY
 859: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
 860: LD_INT 1
 862: PPUSH
 863: LD_INT 2
 865: PPUSH
 866: CALL_OW 12
 870: PPUSH
 871: LD_VAR 0 2
 875: PPUSH
 876: LD_EXP 12
 880: PUSH
 881: LD_INT 2
 883: PLUS
 884: PPUSH
 885: CALL_OW 380
// hc_importance := 105 ;
 889: LD_ADDR_OWVAR 32
 893: PUSH
 894: LD_INT 105
 896: ST_TO_ADDR
// commander := false ;
 897: LD_ADDR_LOC 1
 901: PUSH
 902: LD_INT 0
 904: ST_TO_ADDR
// if Multiplayer then
 905: LD_OWVAR 4
 909: IFFALSE 949
// begin hc_gallery := MULTIAVATARS ;
 911: LD_ADDR_OWVAR 33
 915: PUSH
 916: LD_STRING MULTIAVATARS
 918: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
 919: LD_ADDR_OWVAR 34
 923: PUSH
 924: LD_OWVAR 20
 928: PPUSH
 929: CALL_OW 525
 933: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
 934: LD_ADDR_OWVAR 27
 938: PUSH
 939: LD_OWVAR 20
 943: PPUSH
 944: CALL_OW 526
 948: ST_TO_ADDR
// end ; end else
 949: GO 1014
// begin hc_name :=  ;
 951: LD_ADDR_OWVAR 26
 955: PUSH
 956: LD_STRING 
 958: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
 959: LD_INT 1
 961: PPUSH
 962: LD_INT 2
 964: PPUSH
 965: CALL_OW 12
 969: PPUSH
 970: LD_VAR 0 2
 974: PPUSH
 975: LD_EXP 12
 979: PPUSH
 980: CALL_OW 380
// hc_importance := 0 ;
 984: LD_ADDR_OWVAR 32
 988: PUSH
 989: LD_INT 0
 991: ST_TO_ADDR
// if Multiplayer then
 992: LD_OWVAR 4
 996: IFFALSE 1014
// begin hc_gallery :=  ;
 998: LD_ADDR_OWVAR 33
1002: PUSH
1003: LD_STRING 
1005: ST_TO_ADDR
// hc_face_number := 0 ;
1006: LD_ADDR_OWVAR 34
1010: PUSH
1011: LD_INT 0
1013: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1014: LD_ADDR_VAR 0 9
1018: PUSH
1019: CALL_OW 44
1023: ST_TO_ADDR
// if global_defined then
1024: LD_LOC 3
1028: IFFALSE 1168
// begin if ( cl = class_soldier ) then
1030: LD_VAR 0 2
1034: PUSH
1035: LD_INT 1
1037: EQUAL
1038: IFFALSE 1058
// j := i + soldiers_created else
1040: LD_ADDR_VAR 0 8
1044: PUSH
1045: LD_VAR 0 7
1049: PUSH
1050: LD_LOC 4
1054: PLUS
1055: ST_TO_ADDR
1056: GO 1068
// j := i ;
1058: LD_ADDR_VAR 0 8
1062: PUSH
1063: LD_VAR 0 7
1067: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1068: LD_LOC 2
1072: PUSH
1073: LD_VAR 0 2
1077: ARRAY
1078: PUSH
1079: LD_VAR 0 8
1083: ARRAY
1084: PPUSH
1085: LD_VAR 0 9
1089: PPUSH
1090: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1094: LD_VAR 0 9
1098: PPUSH
1099: LD_INT 2
1101: PPUSH
1102: LD_LOC 2
1106: PUSH
1107: LD_VAR 0 2
1111: ARRAY
1112: PUSH
1113: LD_VAR 0 8
1117: ARRAY
1118: PPUSH
1119: LD_INT 2
1121: PPUSH
1122: CALL_OW 260
1126: PPUSH
1127: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1131: LD_VAR 0 9
1135: PPUSH
1136: LD_INT 1
1138: PPUSH
1139: LD_LOC 2
1143: PUSH
1144: LD_VAR 0 2
1148: ARRAY
1149: PUSH
1150: LD_VAR 0 8
1154: ARRAY
1155: PPUSH
1156: LD_INT 1
1158: PPUSH
1159: CALL_OW 260
1163: PPUSH
1164: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
1168: LD_VAR 0 9
1172: PPUSH
1173: LD_VAR 0 3
1177: PPUSH
1178: LD_VAR 0 4
1182: PPUSH
1183: LD_VAR 0 5
1187: PPUSH
1188: LD_INT 0
1190: PPUSH
1191: CALL_OW 50
// result := result ^ [ un ] ;
1195: LD_ADDR_VAR 0 6
1199: PUSH
1200: LD_VAR 0 6
1204: PUSH
1205: LD_VAR 0 9
1209: PUSH
1210: EMPTY
1211: LIST
1212: ADD
1213: ST_TO_ADDR
// end ;
1214: GO 819
1216: POP
1217: POP
// if not global_defined then
1218: LD_LOC 3
1222: NOT
1223: IFFALSE 1301
// if ( global_units >= cl ) then
1225: LD_LOC 2
1229: PUSH
1230: LD_VAR 0 2
1234: GREATEREQUAL
1235: IFFALSE 1276
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
1237: LD_ADDR_LOC 2
1241: PUSH
1242: LD_LOC 2
1246: PPUSH
1247: LD_VAR 0 2
1251: PPUSH
1252: LD_LOC 2
1256: PUSH
1257: LD_VAR 0 2
1261: ARRAY
1262: PUSH
1263: LD_VAR 0 6
1267: ADD
1268: PPUSH
1269: CALL_OW 1
1273: ST_TO_ADDR
1274: GO 1301
// global_units := Replace ( global_units , cl , result ) ;
1276: LD_ADDR_LOC 2
1280: PUSH
1281: LD_LOC 2
1285: PPUSH
1286: LD_VAR 0 2
1290: PPUSH
1291: LD_VAR 0 6
1295: PPUSH
1296: CALL_OW 1
1300: ST_TO_ADDR
// end ;
1301: LD_VAR 0 6
1305: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
1306: LD_INT 0
1308: PPUSH
1309: PPUSH
1310: PPUSH
1311: PPUSH
1312: PPUSH
1313: PPUSH
1314: PPUSH
1315: PPUSH
1316: PPUSH
1317: PPUSH
// pos := Side_Positions [ side ] ;
1318: LD_ADDR_VAR 0 3
1322: PUSH
1323: LD_EXP 25
1327: PUSH
1328: LD_VAR 0 1
1332: ARRAY
1333: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
1334: LD_ADDR_OWVAR 21
1338: PUSH
1339: LD_EXP 26
1343: PUSH
1344: LD_VAR 0 1
1348: ARRAY
1349: ST_TO_ADDR
// uc_side := side ;
1350: LD_ADDR_OWVAR 20
1354: PUSH
1355: LD_VAR 0 1
1359: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
1360: LD_ADDR_VAR 0 4
1364: PUSH
1365: LD_EXP 29
1369: PUSH
1370: LD_VAR 0 3
1374: ARRAY
1375: PUSH
1376: LD_INT 1
1378: ARRAY
1379: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
1380: LD_ADDR_VAR 0 5
1384: PUSH
1385: LD_EXP 29
1389: PUSH
1390: LD_VAR 0 3
1394: ARRAY
1395: PUSH
1396: LD_INT 2
1398: ARRAY
1399: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
1400: LD_ADDR_VAR 0 6
1404: PUSH
1405: LD_EXP 29
1409: PUSH
1410: LD_VAR 0 3
1414: ARRAY
1415: PUSH
1416: LD_INT 3
1418: ARRAY
1419: ST_TO_ADDR
// commander := true ;
1420: LD_ADDR_LOC 1
1424: PUSH
1425: LD_INT 1
1427: ST_TO_ADDR
// soldiers_created := 0 ;
1428: LD_ADDR_LOC 4
1432: PUSH
1433: LD_INT 0
1435: ST_TO_ADDR
// x := start_def [ pos ] [ 1 ] ;
1436: LD_ADDR_VAR 0 4
1440: PUSH
1441: LD_EXP 31
1445: PUSH
1446: LD_VAR 0 3
1450: ARRAY
1451: PUSH
1452: LD_INT 1
1454: ARRAY
1455: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
1456: LD_ADDR_VAR 0 5
1460: PUSH
1461: LD_EXP 31
1465: PUSH
1466: LD_VAR 0 3
1470: ARRAY
1471: PUSH
1472: LD_INT 2
1474: ARRAY
1475: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
1476: LD_LOC 8
1480: PUSH
1481: LD_EXP 10
1485: MINUS
1486: PPUSH
1487: LD_INT 1
1489: PPUSH
1490: LD_VAR 0 4
1494: PPUSH
1495: LD_VAR 0 5
1499: PPUSH
1500: LD_INT 5
1502: PPUSH
1503: CALL 791 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
1507: LD_LOC 7
1511: PPUSH
1512: LD_INT 3
1514: PPUSH
1515: LD_VAR 0 4
1519: PPUSH
1520: LD_VAR 0 5
1524: PPUSH
1525: LD_INT 5
1527: PPUSH
1528: CALL 791 0 5
// prepare_people ( 1 , 1 , x , y , 5 ) ;
1532: LD_INT 1
1534: PPUSH
1535: LD_INT 1
1537: PPUSH
1538: LD_VAR 0 4
1542: PPUSH
1543: LD_VAR 0 5
1547: PPUSH
1548: LD_INT 5
1550: PPUSH
1551: CALL 791 0 5
// prepare_people ( 1 , 3 , x , y , 5 ) ;
1555: LD_INT 1
1557: PPUSH
1558: LD_INT 3
1560: PPUSH
1561: LD_VAR 0 4
1565: PPUSH
1566: LD_VAR 0 5
1570: PPUSH
1571: LD_INT 5
1573: PPUSH
1574: CALL 791 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
1578: LD_LOC 6
1582: PPUSH
1583: LD_INT 4
1585: PPUSH
1586: LD_VAR 0 4
1590: PPUSH
1591: LD_VAR 0 5
1595: PPUSH
1596: LD_INT 5
1598: PPUSH
1599: CALL 791 0 5
// SetTech ( tech_artifact , side , state_disabled ) ;
1603: LD_INT 24
1605: PPUSH
1606: LD_VAR 0 1
1610: PPUSH
1611: LD_INT 0
1613: PPUSH
1614: CALL_OW 322
// SetTech ( tech_SibFiss , side , state_disabled ) ;
1618: LD_INT 25
1620: PPUSH
1621: LD_VAR 0 1
1625: PPUSH
1626: LD_INT 0
1628: PPUSH
1629: CALL_OW 322
// global_defined := true ;
1633: LD_ADDR_LOC 3
1637: PUSH
1638: LD_INT 1
1640: ST_TO_ADDR
// end ;
1641: LD_VAR 0 2
1645: RET
// function prepare_sides ; var i ; begin
1646: LD_INT 0
1648: PPUSH
1649: PPUSH
// global_units := [ ] ;
1650: LD_ADDR_LOC 2
1654: PUSH
1655: EMPTY
1656: ST_TO_ADDR
// global_defined := false ;
1657: LD_ADDR_LOC 3
1661: PUSH
1662: LD_INT 0
1664: ST_TO_ADDR
// CountClassMembers ;
1665: CALL 1715 0 0
// for i := 1 to 8 do
1669: LD_ADDR_VAR 0 2
1673: PUSH
1674: DOUBLE
1675: LD_INT 1
1677: DEC
1678: ST_TO_ADDR
1679: LD_INT 8
1681: PUSH
1682: FOR_TO
1683: IFFALSE 1708
// if Side_Positions [ i ] then
1685: LD_EXP 25
1689: PUSH
1690: LD_VAR 0 2
1694: ARRAY
1695: IFFALSE 1706
// prepare_side ( i ) ;
1697: LD_VAR 0 2
1701: PPUSH
1702: CALL 1306 0 1
1706: GO 1682
1708: POP
1709: POP
// end ;
1710: LD_VAR 0 1
1714: RET
// function CountClassMembers ; var Mode ; begin
1715: LD_INT 0
1717: PPUSH
1718: PPUSH
// neng := number_of_people ;
1719: LD_ADDR_LOC 5
1723: PUSH
1724: LD_EXP 11
1728: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
1729: LD_ADDR_LOC 8
1733: PUSH
1734: LD_LOC 5
1738: PUSH
1739: LD_INT 4
1741: PUSH
1742: LD_INT 3
1744: PUSH
1745: EMPTY
1746: LIST
1747: LIST
1748: PUSH
1749: LD_VAR 0 2
1753: ARRAY
1754: DIV
1755: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
1756: LD_LOC 8
1760: PUSH
1761: LD_EXP 10
1765: LESS
1766: IFFALSE 1778
// nsol := number_of_breastworks ;
1768: LD_ADDR_LOC 8
1772: PUSH
1773: LD_EXP 10
1777: ST_TO_ADDR
// neng := neng - nsol ;
1778: LD_ADDR_LOC 5
1782: PUSH
1783: LD_LOC 5
1787: PUSH
1788: LD_LOC 8
1792: MINUS
1793: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
1794: LD_ADDR_LOC 6
1798: PUSH
1799: LD_LOC 5
1803: PUSH
1804: LD_INT 3
1806: PUSH
1807: LD_INT 2
1809: PUSH
1810: EMPTY
1811: LIST
1812: LIST
1813: PUSH
1814: LD_VAR 0 2
1818: ARRAY
1819: DIV
1820: ST_TO_ADDR
// if ( nsci < 1 ) then
1821: LD_LOC 6
1825: PUSH
1826: LD_INT 1
1828: LESS
1829: IFFALSE 1839
// nsci := 1 ;
1831: LD_ADDR_LOC 6
1835: PUSH
1836: LD_INT 1
1838: ST_TO_ADDR
// neng := neng - nsci ;
1839: LD_ADDR_LOC 5
1843: PUSH
1844: LD_LOC 5
1848: PUSH
1849: LD_LOC 6
1853: MINUS
1854: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
1855: LD_ADDR_LOC 7
1859: PUSH
1860: LD_LOC 5
1864: PUSH
1865: LD_INT 2
1867: DIV
1868: PUSH
1869: LD_INT 0
1871: PUSH
1872: EMPTY
1873: LIST
1874: LIST
1875: PUSH
1876: LD_VAR 0 2
1880: ARRAY
1881: ST_TO_ADDR
// neng := neng - nmech ;
1882: LD_ADDR_LOC 5
1886: PUSH
1887: LD_LOC 5
1891: PUSH
1892: LD_LOC 7
1896: MINUS
1897: ST_TO_ADDR
// if ( neng < 1 ) then
1898: LD_LOC 5
1902: PUSH
1903: LD_INT 1
1905: LESS
1906: IFFALSE 1916
// neng := 1 ;
1908: LD_ADDR_LOC 5
1912: PUSH
1913: LD_INT 1
1915: ST_TO_ADDR
// end ;
1916: LD_VAR 0 1
1920: RET
// starting var i , d ; begin randomedColors = [ ] ;
1921: LD_ADDR_EXP 41
1925: PUSH
1926: EMPTY
1927: ST_TO_ADDR
// rudestroyedBuildings = [ ] ;
1928: LD_ADDR_EXP 39
1932: PUSH
1933: EMPTY
1934: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
1935: CALL 0 0 0
// MultiplayerColorCheck ;
1939: CALL 3694 0 0
// ChangeAISide ( 3 , randomedColors [ 1 ] ) ;
1943: LD_INT 3
1945: PPUSH
1946: LD_EXP 41
1950: PUSH
1951: LD_INT 1
1953: ARRAY
1954: PPUSH
1955: CALL 2406 0 2
// ResetFog ;
1959: CALL_OW 335
// enable_human_prediction := true ;
1963: LD_ADDR_OWVAR 51
1967: PUSH
1968: LD_INT 1
1970: ST_TO_ADDR
// mp_selectmsg := true ;
1971: LD_ADDR_OWVAR 13
1975: PUSH
1976: LD_INT 1
1978: ST_TO_ADDR
// AIDepotDest = 0 ;
1979: LD_ADDR_EXP 40
1983: PUSH
1984: LD_INT 0
1986: ST_TO_ADDR
// init_map ;
1987: CALL 569 0 0
// prepare_sides ;
1991: CALL 1646 0 0
// PreparePlayers ;
1995: CALL 2455 0 0
// set_shared_visions_and_alliances ;
1999: CALL 733 0 0
// ResetFog ;
2003: CALL_OW 335
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
2007: LD_EXP 42
2011: PPUSH
2012: LD_EXP 43
2016: PPUSH
2017: LD_INT 1
2019: PPUSH
2020: LD_INT 1
2022: PPUSH
2023: CALL_OW 80
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
2027: LD_EXP 42
2031: PPUSH
2032: LD_EXP 43
2036: PPUSH
2037: LD_INT 1
2039: PPUSH
2040: LD_INT 1
2042: PPUSH
2043: CALL_OW 80
// SetAttitude ( sideP1 , sideP3 , att_friend , true ) ;
2047: LD_EXP 42
2051: PPUSH
2052: LD_EXP 44
2056: PPUSH
2057: LD_INT 1
2059: PPUSH
2060: LD_INT 1
2062: PPUSH
2063: CALL_OW 80
// SetAttitude ( sideP1 , sideP4 , att_friend , true ) ;
2067: LD_EXP 42
2071: PPUSH
2072: LD_EXP 45
2076: PPUSH
2077: LD_INT 1
2079: PPUSH
2080: LD_INT 1
2082: PPUSH
2083: CALL_OW 80
// SetAttitude ( sideP2 , sideP3 , att_friend , true ) ;
2087: LD_EXP 43
2091: PPUSH
2092: LD_EXP 44
2096: PPUSH
2097: LD_INT 1
2099: PPUSH
2100: LD_INT 1
2102: PPUSH
2103: CALL_OW 80
// SetAttitude ( sideP2 , sideP4 , att_friend , true ) ;
2107: LD_EXP 43
2111: PPUSH
2112: LD_EXP 45
2116: PPUSH
2117: LD_INT 1
2119: PPUSH
2120: LD_INT 1
2122: PPUSH
2123: CALL_OW 80
// SetAttitude ( sideP3 , sideP4 , att_friend , true ) ;
2127: LD_EXP 44
2131: PPUSH
2132: LD_EXP 45
2136: PPUSH
2137: LD_INT 1
2139: PPUSH
2140: LD_INT 1
2142: PPUSH
2143: CALL_OW 80
// music_nat := Side_Nations [ your_side ] ;
2147: LD_ADDR_OWVAR 71
2151: PUSH
2152: LD_EXP 26
2156: PUSH
2157: LD_OWVAR 2
2161: ARRAY
2162: ST_TO_ADDR
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
2163: LD_EXP 31
2167: PUSH
2168: LD_EXP 25
2172: PUSH
2173: LD_OWVAR 2
2177: ARRAY
2178: ARRAY
2179: PUSH
2180: LD_INT 1
2182: ARRAY
2183: PPUSH
2184: LD_EXP 31
2188: PUSH
2189: LD_EXP 25
2193: PUSH
2194: LD_OWVAR 2
2198: ARRAY
2199: ARRAY
2200: PUSH
2201: LD_INT 2
2203: ARRAY
2204: PPUSH
2205: CALL_OW 86
// end ; end_of_file
2209: END
// export function SpawnGenerals ( side , nation , gallery , numberGal , name , sex , class , skillTab ) ; var x , y , un ; begin
2210: LD_INT 0
2212: PPUSH
2213: PPUSH
2214: PPUSH
2215: PPUSH
// uc_side = side ;
2216: LD_ADDR_OWVAR 20
2220: PUSH
2221: LD_VAR 0 1
2225: ST_TO_ADDR
// uc_nation = nation ;
2226: LD_ADDR_OWVAR 21
2230: PUSH
2231: LD_VAR 0 2
2235: ST_TO_ADDR
// hc_gallery = gallery ;
2236: LD_ADDR_OWVAR 33
2240: PUSH
2241: LD_VAR 0 3
2245: ST_TO_ADDR
// hc_face_number = numberGal ;
2246: LD_ADDR_OWVAR 34
2250: PUSH
2251: LD_VAR 0 4
2255: ST_TO_ADDR
// hc_name = name ;
2256: LD_ADDR_OWVAR 26
2260: PUSH
2261: LD_VAR 0 5
2265: ST_TO_ADDR
// hc_sex = sex ;
2266: LD_ADDR_OWVAR 27
2270: PUSH
2271: LD_VAR 0 6
2275: ST_TO_ADDR
// hc_class = class ;
2276: LD_ADDR_OWVAR 28
2280: PUSH
2281: LD_VAR 0 7
2285: ST_TO_ADDR
// hc_skills = skillTab ;
2286: LD_ADDR_OWVAR 31
2290: PUSH
2291: LD_VAR 0 8
2295: ST_TO_ADDR
// hc_importance = 100 ;
2296: LD_ADDR_OWVAR 32
2300: PUSH
2301: LD_INT 100
2303: ST_TO_ADDR
// un = CreateHuman ;
2304: LD_ADDR_VAR 0 12
2308: PUSH
2309: CALL_OW 44
2313: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
2314: LD_ADDR_VAR 0 10
2318: PUSH
2319: LD_INT 22
2321: PUSH
2322: LD_VAR 0 1
2326: PUSH
2327: EMPTY
2328: LIST
2329: LIST
2330: PPUSH
2331: CALL_OW 69
2335: PUSH
2336: LD_INT 1
2338: ARRAY
2339: PPUSH
2340: CALL_OW 250
2344: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
2345: LD_ADDR_VAR 0 11
2349: PUSH
2350: LD_INT 22
2352: PUSH
2353: LD_VAR 0 1
2357: PUSH
2358: EMPTY
2359: LIST
2360: LIST
2361: PPUSH
2362: CALL_OW 69
2366: PUSH
2367: LD_INT 1
2369: ARRAY
2370: PPUSH
2371: CALL_OW 251
2375: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 5 , false ) ;
2376: LD_VAR 0 12
2380: PPUSH
2381: LD_VAR 0 10
2385: PPUSH
2386: LD_VAR 0 11
2390: PPUSH
2391: LD_INT 5
2393: PPUSH
2394: LD_INT 0
2396: PPUSH
2397: CALL_OW 50
// end ;
2401: LD_VAR 0 9
2405: RET
// export function ChangeAISide ( originalSide , newSide ) ; begin
2406: LD_INT 0
2408: PPUSH
// SetSide ( FilterAllUnits ( [ f_side , originalSide ] ) , newSide ) ;
2409: LD_INT 22
2411: PUSH
2412: LD_VAR 0 1
2416: PUSH
2417: EMPTY
2418: LIST
2419: LIST
2420: PPUSH
2421: CALL_OW 69
2425: PPUSH
2426: LD_VAR 0 2
2430: PPUSH
2431: CALL_OW 235
// wait ( 0 0$2 ) ;
2435: LD_INT 70
2437: PPUSH
2438: CALL_OW 67
// PrepareRussianBase ;
2442: CALL 2767 0 0
// PrepareDifficulty ;
2446: CALL 4243 0 0
// end ;
2450: LD_VAR 0 3
2454: RET
// export function PreparePlayers ; begin
2455: LD_INT 0
2457: PPUSH
// if FilterAllUnits ( [ f_side , sideP1 ] ) > 0 then
2458: LD_INT 22
2460: PUSH
2461: LD_EXP 42
2465: PUSH
2466: EMPTY
2467: LIST
2468: LIST
2469: PPUSH
2470: CALL_OW 69
2474: PUSH
2475: LD_INT 0
2477: GREATER
2478: IFFALSE 2534
// begin PrepareTanks ( sideP1 ) ;
2480: LD_EXP 42
2484: PPUSH
2485: CALL 4002 0 1
// SpawnGenerals ( sideP1 , 1 , us , 5 , Macmillan , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2489: LD_EXP 42
2493: PPUSH
2494: LD_INT 1
2496: PPUSH
2497: LD_STRING us
2499: PPUSH
2500: LD_INT 5
2502: PPUSH
2503: LD_STRING Macmillan
2505: PPUSH
2506: LD_INT 1
2508: PPUSH
2509: LD_INT 1
2511: PPUSH
2512: LD_INT 10
2514: PUSH
2515: LD_INT 8
2517: PUSH
2518: LD_INT 6
2520: PUSH
2521: LD_INT 4
2523: PUSH
2524: EMPTY
2525: LIST
2526: LIST
2527: LIST
2528: LIST
2529: PPUSH
2530: CALL 2210 0 8
// end ; if FilterAllUnits ( [ f_side , sideP2 ] ) > 0 then
2534: LD_INT 22
2536: PUSH
2537: LD_EXP 43
2541: PUSH
2542: EMPTY
2543: LIST
2544: LIST
2545: PPUSH
2546: CALL_OW 69
2550: PUSH
2551: LD_INT 0
2553: GREATER
2554: IFFALSE 2610
// begin PrepareTanks ( sideP2 ) ;
2556: LD_EXP 43
2560: PPUSH
2561: CALL 4002 0 1
// SpawnGenerals ( sideP2 , 1 , us , 2 , Donaldson , sex_female , 1 , [ 10 , 8 , 6 , 3 ] ) ;
2565: LD_EXP 43
2569: PPUSH
2570: LD_INT 1
2572: PPUSH
2573: LD_STRING us
2575: PPUSH
2576: LD_INT 2
2578: PPUSH
2579: LD_STRING Donaldson
2581: PPUSH
2582: LD_INT 2
2584: PPUSH
2585: LD_INT 1
2587: PPUSH
2588: LD_INT 10
2590: PUSH
2591: LD_INT 8
2593: PUSH
2594: LD_INT 6
2596: PUSH
2597: LD_INT 3
2599: PUSH
2600: EMPTY
2601: LIST
2602: LIST
2603: LIST
2604: LIST
2605: PPUSH
2606: CALL 2210 0 8
// end ; if FilterAllUnits ( [ f_side , sideP3 ] ) > 0 then
2610: LD_INT 22
2612: PUSH
2613: LD_EXP 44
2617: PUSH
2618: EMPTY
2619: LIST
2620: LIST
2621: PPUSH
2622: CALL_OW 69
2626: PUSH
2627: LD_INT 0
2629: GREATER
2630: IFFALSE 2686
// begin PrepareTanks ( sideP3 ) ;
2632: LD_EXP 44
2636: PPUSH
2637: CALL 4002 0 1
// SpawnGenerals ( sideP3 , 1 , us , 15 , Brown , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2641: LD_EXP 44
2645: PPUSH
2646: LD_INT 1
2648: PPUSH
2649: LD_STRING us
2651: PPUSH
2652: LD_INT 15
2654: PPUSH
2655: LD_STRING Brown
2657: PPUSH
2658: LD_INT 1
2660: PPUSH
2661: LD_INT 1
2663: PPUSH
2664: LD_INT 10
2666: PUSH
2667: LD_INT 8
2669: PUSH
2670: LD_INT 6
2672: PUSH
2673: LD_INT 4
2675: PUSH
2676: EMPTY
2677: LIST
2678: LIST
2679: LIST
2680: LIST
2681: PPUSH
2682: CALL 2210 0 8
// end ; if FilterAllUnits ( [ f_side , sideP4 ] ) > 0 then
2686: LD_INT 22
2688: PUSH
2689: LD_EXP 45
2693: PUSH
2694: EMPTY
2695: LIST
2696: LIST
2697: PPUSH
2698: CALL_OW 69
2702: PUSH
2703: LD_INT 0
2705: GREATER
2706: IFFALSE 2762
// begin PrepareTanks ( sideP4 ) ;
2708: LD_EXP 45
2712: PPUSH
2713: CALL 4002 0 1
// SpawnGenerals ( sideP4 , 1 , us , 16 , VanHouten , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2717: LD_EXP 45
2721: PPUSH
2722: LD_INT 1
2724: PPUSH
2725: LD_STRING us
2727: PPUSH
2728: LD_INT 16
2730: PPUSH
2731: LD_STRING VanHouten
2733: PPUSH
2734: LD_INT 1
2736: PPUSH
2737: LD_INT 1
2739: PPUSH
2740: LD_INT 10
2742: PUSH
2743: LD_INT 8
2745: PUSH
2746: LD_INT 6
2748: PUSH
2749: LD_INT 4
2751: PUSH
2752: EMPTY
2753: LIST
2754: LIST
2755: LIST
2756: LIST
2757: PPUSH
2758: CALL 2210 0 8
// end ; end ;
2762: LD_VAR 0 1
2766: RET
// export function PrepareRussianBase ; var i ; begin
2767: LD_INT 0
2769: PPUSH
2770: PPUSH
// Randomize ;
2771: CALL_OW 10
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_not , [ f_bweapon , 22 ] ] ] ) do
2775: LD_ADDR_VAR 0 2
2779: PUSH
2780: LD_INT 22
2782: PUSH
2783: LD_EXP 41
2787: PUSH
2788: LD_INT 1
2790: ARRAY
2791: PUSH
2792: EMPTY
2793: LIST
2794: LIST
2795: PUSH
2796: LD_INT 30
2798: PUSH
2799: LD_INT 32
2801: PUSH
2802: EMPTY
2803: LIST
2804: LIST
2805: PUSH
2806: LD_INT 3
2808: PUSH
2809: LD_INT 35
2811: PUSH
2812: LD_INT 22
2814: PUSH
2815: EMPTY
2816: LIST
2817: LIST
2818: PUSH
2819: EMPTY
2820: LIST
2821: LIST
2822: PUSH
2823: EMPTY
2824: LIST
2825: LIST
2826: LIST
2827: PPUSH
2828: CALL_OW 69
2832: PUSH
2833: FOR_IN
2834: IFFALSE 2877
// PlaceWeaponTurret ( i , [ 44 , 43 , 46 , 45 ] [ Rand ( 1 , 4 ) ] ) ;
2836: LD_VAR 0 2
2840: PPUSH
2841: LD_INT 44
2843: PUSH
2844: LD_INT 43
2846: PUSH
2847: LD_INT 46
2849: PUSH
2850: LD_INT 45
2852: PUSH
2853: EMPTY
2854: LIST
2855: LIST
2856: LIST
2857: LIST
2858: PUSH
2859: LD_INT 1
2861: PPUSH
2862: LD_INT 4
2864: PPUSH
2865: CALL_OW 12
2869: ARRAY
2870: PPUSH
2871: CALL_OW 431
2875: GO 2833
2877: POP
2878: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_turret ] , [ f_not , [ f_bweapon , 22 ] ] ] ) do
2879: LD_ADDR_VAR 0 2
2883: PUSH
2884: LD_INT 22
2886: PUSH
2887: LD_EXP 41
2891: PUSH
2892: LD_INT 1
2894: ARRAY
2895: PUSH
2896: EMPTY
2897: LIST
2898: LIST
2899: PUSH
2900: LD_INT 30
2902: PUSH
2903: LD_INT 33
2905: PUSH
2906: EMPTY
2907: LIST
2908: LIST
2909: PUSH
2910: LD_INT 3
2912: PUSH
2913: LD_INT 35
2915: PUSH
2916: LD_INT 22
2918: PUSH
2919: EMPTY
2920: LIST
2921: LIST
2922: PUSH
2923: EMPTY
2924: LIST
2925: LIST
2926: PUSH
2927: EMPTY
2928: LIST
2929: LIST
2930: LIST
2931: PPUSH
2932: CALL_OW 69
2936: PUSH
2937: FOR_IN
2938: IFFALSE 2981
// PlaceWeaponTurret ( i , [ 44 , 43 , 46 , 45 ] [ Rand ( 1 , 4 ) ] ) ;
2940: LD_VAR 0 2
2944: PPUSH
2945: LD_INT 44
2947: PUSH
2948: LD_INT 43
2950: PUSH
2951: LD_INT 46
2953: PUSH
2954: LD_INT 45
2956: PUSH
2957: EMPTY
2958: LIST
2959: LIST
2960: LIST
2961: LIST
2962: PUSH
2963: LD_INT 1
2965: PPUSH
2966: LD_INT 4
2968: PPUSH
2969: CALL_OW 12
2973: ARRAY
2974: PPUSH
2975: CALL_OW 431
2979: GO 2937
2981: POP
2982: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] ] ) do
2983: LD_ADDR_VAR 0 2
2987: PUSH
2988: LD_INT 22
2990: PUSH
2991: LD_EXP 41
2995: PUSH
2996: LD_INT 1
2998: ARRAY
2999: PUSH
3000: EMPTY
3001: LIST
3002: LIST
3003: PUSH
3004: LD_INT 30
3006: PUSH
3007: LD_INT 32
3009: PUSH
3010: EMPTY
3011: LIST
3012: LIST
3013: PUSH
3014: EMPTY
3015: LIST
3016: LIST
3017: PPUSH
3018: CALL_OW 69
3022: PUSH
3023: FOR_IN
3024: IFFALSE 3060
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , i , difficulty_level , 1 , 1 ) ;
3026: LD_EXP 41
3030: PUSH
3031: LD_INT 1
3033: ARRAY
3034: PPUSH
3035: LD_INT 3
3037: PPUSH
3038: LD_VAR 0 2
3042: PPUSH
3043: LD_EXP 38
3047: PPUSH
3048: LD_INT 1
3050: PPUSH
3051: LD_INT 1
3053: PPUSH
3054: CALL 4775 0 6
3058: GO 3023
3060: POP
3061: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , 31 ] ] ) do
3062: LD_ADDR_VAR 0 2
3066: PUSH
3067: LD_INT 22
3069: PUSH
3070: LD_EXP 41
3074: PUSH
3075: LD_INT 1
3077: ARRAY
3078: PUSH
3079: EMPTY
3080: LIST
3081: LIST
3082: PUSH
3083: LD_INT 30
3085: PUSH
3086: LD_INT 31
3088: PUSH
3089: EMPTY
3090: LIST
3091: LIST
3092: PUSH
3093: EMPTY
3094: LIST
3095: LIST
3096: PPUSH
3097: CALL_OW 69
3101: PUSH
3102: FOR_IN
3103: IFFALSE 3121
// PrepareSolBun ( difficulty_level , i ) ;
3105: LD_EXP 38
3109: PPUSH
3110: LD_VAR 0 2
3114: PPUSH
3115: CALL 4948 0 2
3119: GO 3102
3121: POP
3122: POP
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot1 , difficulty_level , 2 , 6 ) ;
3123: LD_EXP 41
3127: PUSH
3128: LD_INT 1
3130: ARRAY
3131: PPUSH
3132: LD_INT 3
3134: PPUSH
3135: LD_INT 16
3137: PPUSH
3138: LD_EXP 38
3142: PPUSH
3143: LD_INT 2
3145: PPUSH
3146: LD_INT 6
3148: PPUSH
3149: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot2 , difficulty_level , 2 , 6 ) ;
3153: LD_EXP 41
3157: PUSH
3158: LD_INT 1
3160: ARRAY
3161: PPUSH
3162: LD_INT 3
3164: PPUSH
3165: LD_INT 64
3167: PPUSH
3168: LD_EXP 38
3172: PPUSH
3173: LD_INT 2
3175: PPUSH
3176: LD_INT 6
3178: PPUSH
3179: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot3 , difficulty_level , 2 , 6 ) ;
3183: LD_EXP 41
3187: PUSH
3188: LD_INT 1
3190: ARRAY
3191: PPUSH
3192: LD_INT 3
3194: PPUSH
3195: LD_INT 20
3197: PPUSH
3198: LD_EXP 38
3202: PPUSH
3203: LD_INT 2
3205: PPUSH
3206: LD_INT 6
3208: PPUSH
3209: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab1 , difficulty_level , 3 , 6 ) ;
3213: LD_EXP 41
3217: PUSH
3218: LD_INT 1
3220: ARRAY
3221: PPUSH
3222: LD_INT 3
3224: PPUSH
3225: LD_INT 96
3227: PPUSH
3228: LD_EXP 38
3232: PPUSH
3233: LD_INT 3
3235: PPUSH
3236: LD_INT 6
3238: PPUSH
3239: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab2 , difficulty_level , 3 , 6 ) ;
3243: LD_EXP 41
3247: PUSH
3248: LD_INT 1
3250: ARRAY
3251: PPUSH
3252: LD_INT 3
3254: PPUSH
3255: LD_INT 42
3257: PPUSH
3258: LD_EXP 38
3262: PPUSH
3263: LD_INT 3
3265: PPUSH
3266: LD_INT 6
3268: PPUSH
3269: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab1 , difficulty_level , 4 , 3 ) ;
3273: LD_EXP 41
3277: PUSH
3278: LD_INT 1
3280: ARRAY
3281: PPUSH
3282: LD_INT 3
3284: PPUSH
3285: LD_INT 28
3287: PPUSH
3288: LD_EXP 38
3292: PPUSH
3293: LD_INT 4
3295: PPUSH
3296: LD_INT 3
3298: PPUSH
3299: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab2 , difficulty_level , 4 , 3 ) ;
3303: LD_EXP 41
3307: PUSH
3308: LD_INT 1
3310: ARRAY
3311: PPUSH
3312: LD_INT 3
3314: PPUSH
3315: LD_INT 29
3317: PPUSH
3318: LD_EXP 38
3322: PPUSH
3323: LD_INT 4
3325: PPUSH
3326: LD_INT 3
3328: PPUSH
3329: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar1 , difficulty_level , 3 , 1 ) ;
3333: LD_EXP 41
3337: PUSH
3338: LD_INT 1
3340: ARRAY
3341: PPUSH
3342: LD_INT 3
3344: PPUSH
3345: LD_INT 48
3347: PPUSH
3348: LD_EXP 38
3352: PPUSH
3353: LD_INT 3
3355: PPUSH
3356: LD_INT 1
3358: PPUSH
3359: CALL 4775 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar2 , difficulty_level , 3 , 1 ) ;
3363: LD_EXP 41
3367: PUSH
3368: LD_INT 1
3370: ARRAY
3371: PPUSH
3372: LD_INT 3
3374: PPUSH
3375: LD_INT 49
3377: PPUSH
3378: LD_EXP 38
3382: PPUSH
3383: LD_INT 3
3385: PPUSH
3386: LD_INT 1
3388: PPUSH
3389: CALL 4775 0 6
// SetTech ( 60 , randomedColors [ 1 ] , state_researched ) ;
3393: LD_INT 60
3395: PPUSH
3396: LD_EXP 41
3400: PUSH
3401: LD_INT 1
3403: ARRAY
3404: PPUSH
3405: LD_INT 2
3407: PPUSH
3408: CALL_OW 322
// SetTech ( 61 , randomedColors [ 1 ] , state_researched ) ;
3412: LD_INT 61
3414: PPUSH
3415: LD_EXP 41
3419: PUSH
3420: LD_INT 1
3422: ARRAY
3423: PPUSH
3424: LD_INT 2
3426: PPUSH
3427: CALL_OW 322
// SetTech ( 62 , randomedColors [ 1 ] , state_researched ) ;
3431: LD_INT 62
3433: PPUSH
3434: LD_EXP 41
3438: PUSH
3439: LD_INT 1
3441: ARRAY
3442: PPUSH
3443: LD_INT 2
3445: PPUSH
3446: CALL_OW 322
// SetTech ( 1 , randomedColors [ 1 ] , state_disabled ) ;
3450: LD_INT 1
3452: PPUSH
3453: LD_EXP 41
3457: PUSH
3458: LD_INT 1
3460: ARRAY
3461: PPUSH
3462: LD_INT 0
3464: PPUSH
3465: CALL_OW 322
// SetAttitude ( randomedColors [ 1 ] , randomedColors [ 2 ] , att_friend , true ) ;
3469: LD_EXP 41
3473: PUSH
3474: LD_INT 1
3476: ARRAY
3477: PPUSH
3478: LD_EXP 41
3482: PUSH
3483: LD_INT 2
3485: ARRAY
3486: PPUSH
3487: LD_INT 1
3489: PPUSH
3490: LD_INT 1
3492: PPUSH
3493: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP1 , att_enemy , true ) ;
3497: LD_EXP 41
3501: PUSH
3502: LD_INT 1
3504: ARRAY
3505: PPUSH
3506: LD_EXP 42
3510: PPUSH
3511: LD_INT 2
3513: PPUSH
3514: LD_INT 1
3516: PPUSH
3517: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP2 , att_enemy , true ) ;
3521: LD_EXP 41
3525: PUSH
3526: LD_INT 1
3528: ARRAY
3529: PPUSH
3530: LD_EXP 43
3534: PPUSH
3535: LD_INT 2
3537: PPUSH
3538: LD_INT 1
3540: PPUSH
3541: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP3 , att_enemy , true ) ;
3545: LD_EXP 41
3549: PUSH
3550: LD_INT 1
3552: ARRAY
3553: PPUSH
3554: LD_EXP 44
3558: PPUSH
3559: LD_INT 2
3561: PPUSH
3562: LD_INT 1
3564: PPUSH
3565: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP4 , att_enemy , true ) ;
3569: LD_EXP 41
3573: PUSH
3574: LD_INT 1
3576: ARRAY
3577: PPUSH
3578: LD_EXP 45
3582: PPUSH
3583: LD_INT 2
3585: PPUSH
3586: LD_INT 1
3588: PPUSH
3589: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP1 , att_enemy , true ) ;
3593: LD_EXP 41
3597: PUSH
3598: LD_INT 2
3600: ARRAY
3601: PPUSH
3602: LD_EXP 42
3606: PPUSH
3607: LD_INT 2
3609: PPUSH
3610: LD_INT 1
3612: PPUSH
3613: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP2 , att_enemy , true ) ;
3617: LD_EXP 41
3621: PUSH
3622: LD_INT 2
3624: ARRAY
3625: PPUSH
3626: LD_EXP 43
3630: PPUSH
3631: LD_INT 2
3633: PPUSH
3634: LD_INT 1
3636: PPUSH
3637: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP3 , att_enemy , true ) ;
3641: LD_EXP 41
3645: PUSH
3646: LD_INT 2
3648: ARRAY
3649: PPUSH
3650: LD_EXP 44
3654: PPUSH
3655: LD_INT 2
3657: PPUSH
3658: LD_INT 1
3660: PPUSH
3661: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP4 , att_enemy , true ) ;
3665: LD_EXP 41
3669: PUSH
3670: LD_INT 2
3672: ARRAY
3673: PPUSH
3674: LD_EXP 45
3678: PPUSH
3679: LD_INT 2
3681: PPUSH
3682: LD_INT 1
3684: PPUSH
3685: CALL_OW 80
// end ;
3689: LD_VAR 0 1
3693: RET
// export function MultiplayerColorCheck ; var i , tmp ; begin
3694: LD_INT 0
3696: PPUSH
3697: PPUSH
3698: PPUSH
// tmp = [ ] ;
3699: LD_ADDR_VAR 0 3
3703: PUSH
3704: EMPTY
3705: ST_TO_ADDR
// for i = 1 to Side_Positions do
3706: LD_ADDR_VAR 0 2
3710: PUSH
3711: DOUBLE
3712: LD_INT 1
3714: DEC
3715: ST_TO_ADDR
3716: LD_EXP 25
3720: PUSH
3721: FOR_TO
3722: IFFALSE 3752
// if Side_Positions [ i ] = 1 then
3724: LD_EXP 25
3728: PUSH
3729: LD_VAR 0 2
3733: ARRAY
3734: PUSH
3735: LD_INT 1
3737: EQUAL
3738: IFFALSE 3750
// sideP1 = i ;
3740: LD_ADDR_EXP 42
3744: PUSH
3745: LD_VAR 0 2
3749: ST_TO_ADDR
3750: GO 3721
3752: POP
3753: POP
// for i = 1 to Side_Positions do
3754: LD_ADDR_VAR 0 2
3758: PUSH
3759: DOUBLE
3760: LD_INT 1
3762: DEC
3763: ST_TO_ADDR
3764: LD_EXP 25
3768: PUSH
3769: FOR_TO
3770: IFFALSE 3800
// if Side_Positions [ i ] = 2 then
3772: LD_EXP 25
3776: PUSH
3777: LD_VAR 0 2
3781: ARRAY
3782: PUSH
3783: LD_INT 2
3785: EQUAL
3786: IFFALSE 3798
// sideP2 = i ;
3788: LD_ADDR_EXP 43
3792: PUSH
3793: LD_VAR 0 2
3797: ST_TO_ADDR
3798: GO 3769
3800: POP
3801: POP
// for i = 1 to Side_Positions do
3802: LD_ADDR_VAR 0 2
3806: PUSH
3807: DOUBLE
3808: LD_INT 1
3810: DEC
3811: ST_TO_ADDR
3812: LD_EXP 25
3816: PUSH
3817: FOR_TO
3818: IFFALSE 3848
// if Side_Positions [ i ] = 3 then
3820: LD_EXP 25
3824: PUSH
3825: LD_VAR 0 2
3829: ARRAY
3830: PUSH
3831: LD_INT 3
3833: EQUAL
3834: IFFALSE 3846
// sideP3 = i ;
3836: LD_ADDR_EXP 44
3840: PUSH
3841: LD_VAR 0 2
3845: ST_TO_ADDR
3846: GO 3817
3848: POP
3849: POP
// for i = 1 to Side_Positions do
3850: LD_ADDR_VAR 0 2
3854: PUSH
3855: DOUBLE
3856: LD_INT 1
3858: DEC
3859: ST_TO_ADDR
3860: LD_EXP 25
3864: PUSH
3865: FOR_TO
3866: IFFALSE 3896
// if Side_Positions [ i ] = 4 then
3868: LD_EXP 25
3872: PUSH
3873: LD_VAR 0 2
3877: ARRAY
3878: PUSH
3879: LD_INT 4
3881: EQUAL
3882: IFFALSE 3894
// sideP4 = i ;
3884: LD_ADDR_EXP 45
3888: PUSH
3889: LD_VAR 0 2
3893: ST_TO_ADDR
3894: GO 3865
3896: POP
3897: POP
// for i = 1 to Side_Positions do
3898: LD_ADDR_VAR 0 2
3902: PUSH
3903: DOUBLE
3904: LD_INT 1
3906: DEC
3907: ST_TO_ADDR
3908: LD_EXP 25
3912: PUSH
3913: FOR_TO
3914: IFFALSE 3950
// if Side_Positions [ i ] <> 0 then
3916: LD_EXP 25
3920: PUSH
3921: LD_VAR 0 2
3925: ARRAY
3926: PUSH
3927: LD_INT 0
3929: NONEQUAL
3930: IFFALSE 3948
// tmp = tmp ^ i ;
3932: LD_ADDR_VAR 0 3
3936: PUSH
3937: LD_VAR 0 3
3941: PUSH
3942: LD_VAR 0 2
3946: ADD
3947: ST_TO_ADDR
3948: GO 3913
3950: POP
3951: POP
// randomedColors = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff tmp ;
3952: LD_ADDR_EXP 41
3956: PUSH
3957: LD_INT 1
3959: PUSH
3960: LD_INT 2
3962: PUSH
3963: LD_INT 3
3965: PUSH
3966: LD_INT 4
3968: PUSH
3969: LD_INT 5
3971: PUSH
3972: LD_INT 6
3974: PUSH
3975: LD_INT 7
3977: PUSH
3978: LD_INT 8
3980: PUSH
3981: EMPTY
3982: LIST
3983: LIST
3984: LIST
3985: LIST
3986: LIST
3987: LIST
3988: LIST
3989: LIST
3990: PUSH
3991: LD_VAR 0 3
3995: DIFF
3996: ST_TO_ADDR
// end ;
3997: LD_VAR 0 1
4001: RET
// export function PrepareTanks ( side ) ; var i , x , y , veh ; begin
4002: LD_INT 0
4004: PPUSH
4005: PPUSH
4006: PPUSH
4007: PPUSH
4008: PPUSH
// for i in FilterAllUnits ( [ [ f_side , side ] , [ f_class , 3 ] ] ) do
4009: LD_ADDR_VAR 0 3
4013: PUSH
4014: LD_INT 22
4016: PUSH
4017: LD_VAR 0 1
4021: PUSH
4022: EMPTY
4023: LIST
4024: LIST
4025: PUSH
4026: LD_INT 25
4028: PUSH
4029: LD_INT 3
4031: PUSH
4032: EMPTY
4033: LIST
4034: LIST
4035: PUSH
4036: EMPTY
4037: LIST
4038: LIST
4039: PPUSH
4040: CALL_OW 69
4044: PUSH
4045: FOR_IN
4046: IFFALSE 4236
// begin uc_side = side ;
4048: LD_ADDR_OWVAR 20
4052: PUSH
4053: LD_VAR 0 1
4057: ST_TO_ADDR
// uc_nation = 1 ;
4058: LD_ADDR_OWVAR 21
4062: PUSH
4063: LD_INT 1
4065: ST_TO_ADDR
// vc_engine = 1 ;
4066: LD_ADDR_OWVAR 39
4070: PUSH
4071: LD_INT 1
4073: ST_TO_ADDR
// vc_control = 1 ;
4074: LD_ADDR_OWVAR 38
4078: PUSH
4079: LD_INT 1
4081: ST_TO_ADDR
// vc_weapon = [ 4 , 5 , 3 , 7 ] [ Rand ( 1 , 4 ) ] ;
4082: LD_ADDR_OWVAR 40
4086: PUSH
4087: LD_INT 4
4089: PUSH
4090: LD_INT 5
4092: PUSH
4093: LD_INT 3
4095: PUSH
4096: LD_INT 7
4098: PUSH
4099: EMPTY
4100: LIST
4101: LIST
4102: LIST
4103: LIST
4104: PUSH
4105: LD_INT 1
4107: PPUSH
4108: LD_INT 4
4110: PPUSH
4111: CALL_OW 12
4115: ARRAY
4116: ST_TO_ADDR
// vc_chassis = 3 ;
4117: LD_ADDR_OWVAR 37
4121: PUSH
4122: LD_INT 3
4124: ST_TO_ADDR
// veh = CreateVehicle ;
4125: LD_ADDR_VAR 0 6
4129: PUSH
4130: CALL_OW 45
4134: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4135: LD_ADDR_VAR 0 4
4139: PUSH
4140: LD_INT 22
4142: PUSH
4143: LD_VAR 0 1
4147: PUSH
4148: EMPTY
4149: LIST
4150: LIST
4151: PPUSH
4152: CALL_OW 69
4156: PUSH
4157: LD_INT 1
4159: ARRAY
4160: PPUSH
4161: CALL_OW 250
4165: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4166: LD_ADDR_VAR 0 5
4170: PUSH
4171: LD_INT 22
4173: PUSH
4174: LD_VAR 0 1
4178: PUSH
4179: EMPTY
4180: LIST
4181: LIST
4182: PPUSH
4183: CALL_OW 69
4187: PUSH
4188: LD_INT 1
4190: ARRAY
4191: PPUSH
4192: CALL_OW 251
4196: ST_TO_ADDR
// SetDir ( veh , 3 ) ;
4197: LD_VAR 0 6
4201: PPUSH
4202: LD_INT 3
4204: PPUSH
4205: CALL_OW 233
// PlaceUnitXYR ( veh , x , y , 5 , false ) ;
4209: LD_VAR 0 6
4213: PPUSH
4214: LD_VAR 0 4
4218: PPUSH
4219: LD_VAR 0 5
4223: PPUSH
4224: LD_INT 5
4226: PPUSH
4227: LD_INT 0
4229: PPUSH
4230: CALL_OW 50
// end ;
4234: GO 4045
4236: POP
4237: POP
// end ;
4238: LD_VAR 0 2
4242: RET
// export function PrepareDifficulty ; begin
4243: LD_INT 0
4245: PPUSH
// SetTech ( 28 , randomedColors [ 1 ] , state_disabled ) ;
4246: LD_INT 28
4248: PPUSH
4249: LD_EXP 41
4253: PUSH
4254: LD_INT 1
4256: ARRAY
4257: PPUSH
4258: LD_INT 0
4260: PPUSH
4261: CALL_OW 322
// SetTech ( 28 , randomedColors [ 2 ] , state_disabled ) ;
4265: LD_INT 28
4267: PPUSH
4268: LD_EXP 41
4272: PUSH
4273: LD_INT 2
4275: ARRAY
4276: PPUSH
4277: LD_INT 0
4279: PPUSH
4280: CALL_OW 322
// SetTech ( 51 , randomedColors [ 1 ] , state_disabled ) ;
4284: LD_INT 51
4286: PPUSH
4287: LD_EXP 41
4291: PUSH
4292: LD_INT 1
4294: ARRAY
4295: PPUSH
4296: LD_INT 0
4298: PPUSH
4299: CALL_OW 322
// SetTech ( 52 , randomedColors [ 1 ] , state_disabled ) ;
4303: LD_INT 52
4305: PPUSH
4306: LD_EXP 41
4310: PUSH
4311: LD_INT 1
4313: ARRAY
4314: PPUSH
4315: LD_INT 0
4317: PPUSH
4318: CALL_OW 322
// SetTech ( 53 , randomedColors [ 1 ] , state_disabled ) ;
4322: LD_INT 53
4324: PPUSH
4325: LD_EXP 41
4329: PUSH
4330: LD_INT 1
4332: ARRAY
4333: PPUSH
4334: LD_INT 0
4336: PPUSH
4337: CALL_OW 322
// if difficulty_level > 5 then
4341: LD_EXP 38
4345: PUSH
4346: LD_INT 5
4348: GREATER
4349: IFFALSE 4484
// begin SetTech ( 48 , randomedColors [ 1 ] , state_researched ) ;
4351: LD_INT 48
4353: PPUSH
4354: LD_EXP 41
4358: PUSH
4359: LD_INT 1
4361: ARRAY
4362: PPUSH
4363: LD_INT 2
4365: PPUSH
4366: CALL_OW 322
// SetTech ( 51 , randomedColors [ 1 ] , state_researched ) ;
4370: LD_INT 51
4372: PPUSH
4373: LD_EXP 41
4377: PUSH
4378: LD_INT 1
4380: ARRAY
4381: PPUSH
4382: LD_INT 2
4384: PPUSH
4385: CALL_OW 322
// SetTech ( 54 , randomedColors [ 1 ] , state_researched ) ;
4389: LD_INT 54
4391: PPUSH
4392: LD_EXP 41
4396: PUSH
4397: LD_INT 1
4399: ARRAY
4400: PPUSH
4401: LD_INT 2
4403: PPUSH
4404: CALL_OW 322
// SetTech ( 57 , randomedColors [ 1 ] , state_researched ) ;
4408: LD_INT 57
4410: PPUSH
4411: LD_EXP 41
4415: PUSH
4416: LD_INT 1
4418: ARRAY
4419: PPUSH
4420: LD_INT 2
4422: PPUSH
4423: CALL_OW 322
// SetTech ( 60 , randomedColors [ 1 ] , state_researched ) ;
4427: LD_INT 60
4429: PPUSH
4430: LD_EXP 41
4434: PUSH
4435: LD_INT 1
4437: ARRAY
4438: PPUSH
4439: LD_INT 2
4441: PPUSH
4442: CALL_OW 322
// SetTech ( 63 , randomedColors [ 1 ] , state_researched ) ;
4446: LD_INT 63
4448: PPUSH
4449: LD_EXP 41
4453: PUSH
4454: LD_INT 1
4456: ARRAY
4457: PPUSH
4458: LD_INT 2
4460: PPUSH
4461: CALL_OW 322
// SetTech ( 66 , randomedColors [ 1 ] , state_researched ) ;
4465: LD_INT 66
4467: PPUSH
4468: LD_EXP 41
4472: PUSH
4473: LD_INT 1
4475: ARRAY
4476: PPUSH
4477: LD_INT 2
4479: PPUSH
4480: CALL_OW 322
// end ; if difficulty_level > 7 then
4484: LD_EXP 38
4488: PUSH
4489: LD_INT 7
4491: GREATER
4492: IFFALSE 4627
// begin SetTech ( 49 , randomedColors [ 1 ] , state_researched ) ;
4494: LD_INT 49
4496: PPUSH
4497: LD_EXP 41
4501: PUSH
4502: LD_INT 1
4504: ARRAY
4505: PPUSH
4506: LD_INT 2
4508: PPUSH
4509: CALL_OW 322
// SetTech ( 52 , randomedColors [ 1 ] , state_researched ) ;
4513: LD_INT 52
4515: PPUSH
4516: LD_EXP 41
4520: PUSH
4521: LD_INT 1
4523: ARRAY
4524: PPUSH
4525: LD_INT 2
4527: PPUSH
4528: CALL_OW 322
// SetTech ( 55 , randomedColors [ 1 ] , state_researched ) ;
4532: LD_INT 55
4534: PPUSH
4535: LD_EXP 41
4539: PUSH
4540: LD_INT 1
4542: ARRAY
4543: PPUSH
4544: LD_INT 2
4546: PPUSH
4547: CALL_OW 322
// SetTech ( 58 , randomedColors [ 1 ] , state_researched ) ;
4551: LD_INT 58
4553: PPUSH
4554: LD_EXP 41
4558: PUSH
4559: LD_INT 1
4561: ARRAY
4562: PPUSH
4563: LD_INT 2
4565: PPUSH
4566: CALL_OW 322
// SetTech ( 61 , randomedColors [ 1 ] , state_researched ) ;
4570: LD_INT 61
4572: PPUSH
4573: LD_EXP 41
4577: PUSH
4578: LD_INT 1
4580: ARRAY
4581: PPUSH
4582: LD_INT 2
4584: PPUSH
4585: CALL_OW 322
// SetTech ( 64 , randomedColors [ 1 ] , state_researched ) ;
4589: LD_INT 64
4591: PPUSH
4592: LD_EXP 41
4596: PUSH
4597: LD_INT 1
4599: ARRAY
4600: PPUSH
4601: LD_INT 2
4603: PPUSH
4604: CALL_OW 322
// SetTech ( 67 , randomedColors [ 1 ] , state_researched ) ;
4608: LD_INT 67
4610: PPUSH
4611: LD_EXP 41
4615: PUSH
4616: LD_INT 1
4618: ARRAY
4619: PPUSH
4620: LD_INT 2
4622: PPUSH
4623: CALL_OW 322
// end ; if difficulty_level > 8 then
4627: LD_EXP 38
4631: PUSH
4632: LD_INT 8
4634: GREATER
4635: IFFALSE 4770
// begin SetTech ( 50 , randomedColors [ 1 ] , state_researched ) ;
4637: LD_INT 50
4639: PPUSH
4640: LD_EXP 41
4644: PUSH
4645: LD_INT 1
4647: ARRAY
4648: PPUSH
4649: LD_INT 2
4651: PPUSH
4652: CALL_OW 322
// SetTech ( 53 , randomedColors [ 1 ] , state_researched ) ;
4656: LD_INT 53
4658: PPUSH
4659: LD_EXP 41
4663: PUSH
4664: LD_INT 1
4666: ARRAY
4667: PPUSH
4668: LD_INT 2
4670: PPUSH
4671: CALL_OW 322
// SetTech ( 56 , randomedColors [ 1 ] , state_researched ) ;
4675: LD_INT 56
4677: PPUSH
4678: LD_EXP 41
4682: PUSH
4683: LD_INT 1
4685: ARRAY
4686: PPUSH
4687: LD_INT 2
4689: PPUSH
4690: CALL_OW 322
// SetTech ( 59 , randomedColors [ 1 ] , state_researched ) ;
4694: LD_INT 59
4696: PPUSH
4697: LD_EXP 41
4701: PUSH
4702: LD_INT 1
4704: ARRAY
4705: PPUSH
4706: LD_INT 2
4708: PPUSH
4709: CALL_OW 322
// SetTech ( 62 , randomedColors [ 1 ] , state_researched ) ;
4713: LD_INT 62
4715: PPUSH
4716: LD_EXP 41
4720: PUSH
4721: LD_INT 1
4723: ARRAY
4724: PPUSH
4725: LD_INT 2
4727: PPUSH
4728: CALL_OW 322
// SetTech ( 65 , randomedColors [ 1 ] , state_researched ) ;
4732: LD_INT 65
4734: PPUSH
4735: LD_EXP 41
4739: PUSH
4740: LD_INT 1
4742: ARRAY
4743: PPUSH
4744: LD_INT 2
4746: PPUSH
4747: CALL_OW 322
// SetTech ( 68 , randomedColors [ 1 ] , state_researched ) ;
4751: LD_INT 68
4753: PPUSH
4754: LD_EXP 41
4758: PUSH
4759: LD_INT 1
4761: ARRAY
4762: PPUSH
4763: LD_INT 2
4765: PPUSH
4766: CALL_OW 322
// end ; end ;
4770: LD_VAR 0 1
4774: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , class , count ) ; var i , l , un ; begin
4775: LD_INT 0
4777: PPUSH
4778: PPUSH
4779: PPUSH
4780: PPUSH
// for i = 1 to count do
4781: LD_ADDR_VAR 0 8
4785: PUSH
4786: DOUBLE
4787: LD_INT 1
4789: DEC
4790: ST_TO_ADDR
4791: LD_VAR 0 6
4795: PUSH
4796: FOR_TO
4797: IFFALSE 4941
// begin uc_side = side ;
4799: LD_ADDR_OWVAR 20
4803: PUSH
4804: LD_VAR 0 1
4808: ST_TO_ADDR
// uc_nation = nation ;
4809: LD_ADDR_OWVAR 21
4813: PUSH
4814: LD_VAR 0 2
4818: ST_TO_ADDR
// hc_gallery =  ;
4819: LD_ADDR_OWVAR 33
4823: PUSH
4824: LD_STRING 
4826: ST_TO_ADDR
// hc_name =  ;
4827: LD_ADDR_OWVAR 26
4831: PUSH
4832: LD_STRING 
4834: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
4835: LD_ADDR_OWVAR 29
4839: PUSH
4840: LD_INT 10
4842: PUSH
4843: LD_INT 10
4845: PUSH
4846: EMPTY
4847: LIST
4848: LIST
4849: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
4850: LD_ADDR_OWVAR 31
4854: PUSH
4855: LD_VAR 0 4
4859: PUSH
4860: LD_VAR 0 4
4864: PUSH
4865: LD_VAR 0 4
4869: PUSH
4870: LD_VAR 0 4
4874: PUSH
4875: EMPTY
4876: LIST
4877: LIST
4878: LIST
4879: LIST
4880: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
4881: LD_ADDR_OWVAR 27
4885: PUSH
4886: LD_INT 1
4888: PPUSH
4889: LD_INT 2
4891: PPUSH
4892: CALL_OW 12
4896: ST_TO_ADDR
// hc_class = class ;
4897: LD_ADDR_OWVAR 28
4901: PUSH
4902: LD_VAR 0 5
4906: ST_TO_ADDR
// hc_importance = 0 ;
4907: LD_ADDR_OWVAR 32
4911: PUSH
4912: LD_INT 0
4914: ST_TO_ADDR
// un = CreateHuman ;
4915: LD_ADDR_VAR 0 10
4919: PUSH
4920: CALL_OW 44
4924: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
4925: LD_VAR 0 10
4929: PPUSH
4930: LD_VAR 0 3
4934: PPUSH
4935: CALL_OW 52
// end ;
4939: GO 4796
4941: POP
4942: POP
// end ;
4943: LD_VAR 0 7
4947: RET
// export function PrepareSolBun ( skill , b ) ; var un , dir ; begin
4948: LD_INT 0
4950: PPUSH
4951: PPUSH
4952: PPUSH
// uc_side := randomedColors [ 1 ] ;
4953: LD_ADDR_OWVAR 20
4957: PUSH
4958: LD_EXP 41
4962: PUSH
4963: LD_INT 1
4965: ARRAY
4966: ST_TO_ADDR
// uc_nation := 3 ;
4967: LD_ADDR_OWVAR 21
4971: PUSH
4972: LD_INT 3
4974: ST_TO_ADDR
// hc_gallery =  ;
4975: LD_ADDR_OWVAR 33
4979: PUSH
4980: LD_STRING 
4982: ST_TO_ADDR
// hc_name =  ;
4983: LD_ADDR_OWVAR 26
4987: PUSH
4988: LD_STRING 
4990: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
4991: LD_ADDR_OWVAR 29
4995: PUSH
4996: LD_INT 10
4998: PUSH
4999: LD_INT 10
5001: PUSH
5002: EMPTY
5003: LIST
5004: LIST
5005: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5006: LD_ADDR_OWVAR 31
5010: PUSH
5011: LD_VAR 0 1
5015: PUSH
5016: LD_VAR 0 1
5020: PUSH
5021: LD_VAR 0 1
5025: PUSH
5026: LD_VAR 0 1
5030: PUSH
5031: EMPTY
5032: LIST
5033: LIST
5034: LIST
5035: LIST
5036: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5037: LD_ADDR_OWVAR 27
5041: PUSH
5042: LD_INT 1
5044: PPUSH
5045: LD_INT 2
5047: PPUSH
5048: CALL_OW 12
5052: ST_TO_ADDR
// hc_class = 1 ;
5053: LD_ADDR_OWVAR 28
5057: PUSH
5058: LD_INT 1
5060: ST_TO_ADDR
// hc_importance = 0 ;
5061: LD_ADDR_OWVAR 32
5065: PUSH
5066: LD_INT 0
5068: ST_TO_ADDR
// un = CreateHuman ;
5069: LD_ADDR_VAR 0 4
5073: PUSH
5074: CALL_OW 44
5078: ST_TO_ADDR
// dir := GetDir ( b ) - 3 ;
5079: LD_ADDR_VAR 0 5
5083: PUSH
5084: LD_VAR 0 2
5088: PPUSH
5089: CALL_OW 254
5093: PUSH
5094: LD_INT 3
5096: MINUS
5097: ST_TO_ADDR
// if dir < 0 then
5098: LD_VAR 0 5
5102: PUSH
5103: LD_INT 0
5105: LESS
5106: IFFALSE 5122
// dir := 6 + dir ;
5108: LD_ADDR_VAR 0 5
5112: PUSH
5113: LD_INT 6
5115: PUSH
5116: LD_VAR 0 5
5120: PLUS
5121: ST_TO_ADDR
// SetDir ( un , dir ) ;
5122: LD_VAR 0 4
5126: PPUSH
5127: LD_VAR 0 5
5131: PPUSH
5132: CALL_OW 233
// PlaceHumanInUnit ( un , b ) ;
5136: LD_VAR 0 4
5140: PPUSH
5141: LD_VAR 0 2
5145: PPUSH
5146: CALL_OW 52
// end ;
5150: LD_VAR 0 3
5154: RET
// export function ResAllTechs ( side , lab , nation ) ; var i , tech , cout ; begin
5155: LD_INT 0
5157: PPUSH
5158: PPUSH
5159: PPUSH
5160: PPUSH
// for i = 1 to 72 do
5161: LD_ADDR_VAR 0 5
5165: PUSH
5166: DOUBLE
5167: LD_INT 1
5169: DEC
5170: ST_TO_ADDR
5171: LD_INT 72
5173: PUSH
5174: FOR_TO
5175: IFFALSE 5233
// if GetTech ( i , side ) = state_enabled and TechNationAvailable ( i , nation ) = true then
5177: LD_VAR 0 5
5181: PPUSH
5182: LD_VAR 0 1
5186: PPUSH
5187: CALL_OW 321
5191: PUSH
5192: LD_INT 1
5194: EQUAL
5195: PUSH
5196: LD_VAR 0 5
5200: PPUSH
5201: LD_VAR 0 3
5205: PPUSH
5206: CALL_OW 482
5210: PUSH
5211: LD_INT 1
5213: EQUAL
5214: AND
5215: IFFALSE 5231
// AddComResearch ( lab , i ) ;
5217: LD_VAR 0 2
5221: PPUSH
5222: LD_VAR 0 5
5226: PPUSH
5227: CALL_OW 184
5231: GO 5174
5233: POP
5234: POP
// end ;
5235: LD_VAR 0 4
5239: RET
// export function LinkRemoteVehicle ( side , area , build ) ; var i , list1 , list2 ; begin
5240: LD_INT 0
5242: PPUSH
5243: PPUSH
5244: PPUSH
5245: PPUSH
// list1 = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_not , [ f_linked ] ] , [ f_lives , 251 ] ] ) ;
5246: LD_ADDR_VAR 0 6
5250: PUSH
5251: LD_VAR 0 2
5255: PPUSH
5256: LD_INT 22
5258: PUSH
5259: LD_VAR 0 1
5263: PUSH
5264: EMPTY
5265: LIST
5266: LIST
5267: PUSH
5268: LD_INT 3
5270: PUSH
5271: LD_INT 61
5273: PUSH
5274: EMPTY
5275: LIST
5276: PUSH
5277: EMPTY
5278: LIST
5279: LIST
5280: PUSH
5281: LD_INT 24
5283: PUSH
5284: LD_INT 251
5286: PUSH
5287: EMPTY
5288: LIST
5289: LIST
5290: PUSH
5291: EMPTY
5292: LIST
5293: LIST
5294: LIST
5295: PPUSH
5296: CALL_OW 70
5300: ST_TO_ADDR
// list2 = UnitsInside ( build ) ;
5301: LD_ADDR_VAR 0 7
5305: PUSH
5306: LD_VAR 0 3
5310: PPUSH
5311: CALL_OW 313
5315: ST_TO_ADDR
// if not list1 or not list2 then
5316: LD_VAR 0 6
5320: NOT
5321: PUSH
5322: LD_VAR 0 7
5326: NOT
5327: OR
5328: IFFALSE 5332
// exit ;
5330: GO 5408
// if list1 > 0 and list2 > 0 then
5332: LD_VAR 0 6
5336: PUSH
5337: LD_INT 0
5339: GREATER
5340: PUSH
5341: LD_VAR 0 7
5345: PUSH
5346: LD_INT 0
5348: GREATER
5349: AND
5350: IFFALSE 5408
// for i = 1 to list1 do
5352: LD_ADDR_VAR 0 5
5356: PUSH
5357: DOUBLE
5358: LD_INT 1
5360: DEC
5361: ST_TO_ADDR
5362: LD_VAR 0 6
5366: PUSH
5367: FOR_TO
5368: IFFALSE 5406
// AddComLinkTo ( list1 [ i ] , list2 [ Rand ( 1 , list2 ) ] ) ;
5370: LD_VAR 0 6
5374: PUSH
5375: LD_VAR 0 5
5379: ARRAY
5380: PPUSH
5381: LD_VAR 0 7
5385: PUSH
5386: LD_INT 1
5388: PPUSH
5389: LD_VAR 0 7
5393: PPUSH
5394: CALL_OW 12
5398: ARRAY
5399: PPUSH
5400: CALL_OW 195
5404: GO 5367
5406: POP
5407: POP
// end ;
5408: LD_VAR 0 4
5412: RET
// export function EnterBunkerOrBarrack ( side , area ) ; var i , j , soldiers_list , turretList , temp , barrackList , insideUnits ; begin
5413: LD_INT 0
5415: PPUSH
5416: PPUSH
5417: PPUSH
5418: PPUSH
5419: PPUSH
5420: PPUSH
5421: PPUSH
5422: PPUSH
// soldiers_list = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_outside ] , [ f_lives , 700 ] , [ f_not , [ f_hastask ] ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
5423: LD_ADDR_VAR 0 6
5427: PUSH
5428: LD_VAR 0 2
5432: PPUSH
5433: LD_INT 22
5435: PUSH
5436: LD_VAR 0 1
5440: PUSH
5441: EMPTY
5442: LIST
5443: LIST
5444: PUSH
5445: LD_INT 56
5447: PUSH
5448: EMPTY
5449: LIST
5450: PUSH
5451: LD_INT 24
5453: PUSH
5454: LD_INT 700
5456: PUSH
5457: EMPTY
5458: LIST
5459: LIST
5460: PUSH
5461: LD_INT 3
5463: PUSH
5464: LD_INT 60
5466: PUSH
5467: EMPTY
5468: LIST
5469: PUSH
5470: EMPTY
5471: LIST
5472: LIST
5473: PUSH
5474: LD_INT 2
5476: PUSH
5477: LD_INT 25
5479: PUSH
5480: LD_INT 1
5482: PUSH
5483: EMPTY
5484: LIST
5485: LIST
5486: PUSH
5487: LD_INT 25
5489: PUSH
5490: LD_INT 5
5492: PUSH
5493: EMPTY
5494: LIST
5495: LIST
5496: PUSH
5497: LD_INT 25
5499: PUSH
5500: LD_INT 8
5502: PUSH
5503: EMPTY
5504: LIST
5505: LIST
5506: PUSH
5507: LD_INT 25
5509: PUSH
5510: LD_INT 9
5512: PUSH
5513: EMPTY
5514: LIST
5515: LIST
5516: PUSH
5517: EMPTY
5518: LIST
5519: LIST
5520: LIST
5521: LIST
5522: LIST
5523: PUSH
5524: EMPTY
5525: LIST
5526: LIST
5527: LIST
5528: LIST
5529: LIST
5530: PPUSH
5531: CALL_OW 70
5535: ST_TO_ADDR
// turretList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_btype , b_bunker ] , [ f_empty ] , [ f_lives , 251 ] ] ) ;
5536: LD_ADDR_VAR 0 7
5540: PUSH
5541: LD_VAR 0 2
5545: PPUSH
5546: LD_INT 22
5548: PUSH
5549: LD_VAR 0 1
5553: PUSH
5554: EMPTY
5555: LIST
5556: LIST
5557: PUSH
5558: LD_INT 30
5560: PUSH
5561: LD_INT 32
5563: PUSH
5564: EMPTY
5565: LIST
5566: LIST
5567: PUSH
5568: LD_INT 58
5570: PUSH
5571: EMPTY
5572: LIST
5573: PUSH
5574: LD_INT 24
5576: PUSH
5577: LD_INT 251
5579: PUSH
5580: EMPTY
5581: LIST
5582: LIST
5583: PUSH
5584: EMPTY
5585: LIST
5586: LIST
5587: LIST
5588: LIST
5589: PPUSH
5590: CALL_OW 70
5594: ST_TO_ADDR
// barrackList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_or , [ f_btype , 4 ] , [ f_btype , 5 ] ] , [ f_lives , 251 ] ] ) ;
5595: LD_ADDR_VAR 0 9
5599: PUSH
5600: LD_VAR 0 2
5604: PPUSH
5605: LD_INT 22
5607: PUSH
5608: LD_VAR 0 1
5612: PUSH
5613: EMPTY
5614: LIST
5615: LIST
5616: PUSH
5617: LD_INT 2
5619: PUSH
5620: LD_INT 30
5622: PUSH
5623: LD_INT 4
5625: PUSH
5626: EMPTY
5627: LIST
5628: LIST
5629: PUSH
5630: LD_INT 30
5632: PUSH
5633: LD_INT 5
5635: PUSH
5636: EMPTY
5637: LIST
5638: LIST
5639: PUSH
5640: EMPTY
5641: LIST
5642: LIST
5643: LIST
5644: PUSH
5645: LD_INT 24
5647: PUSH
5648: LD_INT 251
5650: PUSH
5651: EMPTY
5652: LIST
5653: LIST
5654: PUSH
5655: EMPTY
5656: LIST
5657: LIST
5658: LIST
5659: PPUSH
5660: CALL_OW 70
5664: ST_TO_ADDR
// if barrackList > 0 then
5665: LD_VAR 0 9
5669: PUSH
5670: LD_INT 0
5672: GREATER
5673: IFFALSE 5811
// begin if turretList = 0 then
5675: LD_VAR 0 7
5679: PUSH
5680: LD_INT 0
5682: EQUAL
5683: IFFALSE 5715
// begin ComEnterUnit ( soldiers_list , barrackList [ Rand ( 1 , barrackList ) ] ) ;
5685: LD_VAR 0 6
5689: PPUSH
5690: LD_VAR 0 9
5694: PUSH
5695: LD_INT 1
5697: PPUSH
5698: LD_VAR 0 9
5702: PPUSH
5703: CALL_OW 12
5707: ARRAY
5708: PPUSH
5709: CALL_OW 120
// end else
5713: GO 5811
// begin for i in barrackList do
5715: LD_ADDR_VAR 0 4
5719: PUSH
5720: LD_VAR 0 9
5724: PUSH
5725: FOR_IN
5726: IFFALSE 5809
// begin insideUnits = UnitsInside ( i ) ;
5728: LD_ADDR_VAR 0 10
5732: PUSH
5733: LD_VAR 0 4
5737: PPUSH
5738: CALL_OW 313
5742: ST_TO_ADDR
// if insideUnits > 0 then
5743: LD_VAR 0 10
5747: PUSH
5748: LD_INT 0
5750: GREATER
5751: IFFALSE 5775
// ComEnterUnit ( insideUnits [ 1 ] , turretList [ 1 ] ) ;
5753: LD_VAR 0 10
5757: PUSH
5758: LD_INT 1
5760: ARRAY
5761: PPUSH
5762: LD_VAR 0 7
5766: PUSH
5767: LD_INT 1
5769: ARRAY
5770: PPUSH
5771: CALL_OW 120
// if soldiers_list > 0 then
5775: LD_VAR 0 6
5779: PUSH
5780: LD_INT 0
5782: GREATER
5783: IFFALSE 5807
// ComEnterUnit ( soldiers_list [ 1 ] , turretList [ 1 ] ) ;
5785: LD_VAR 0 6
5789: PUSH
5790: LD_INT 1
5792: ARRAY
5793: PPUSH
5794: LD_VAR 0 7
5798: PUSH
5799: LD_INT 1
5801: ARRAY
5802: PPUSH
5803: CALL_OW 120
// end ;
5807: GO 5725
5809: POP
5810: POP
// end ; end ; end ;
5811: LD_VAR 0 3
5815: RET
// export function RepairAndRebuildBase ( side , depot , baseArea , destroyedBuildings ) ; var buildings_list , i , engineerOkInside , engineerOkOutside , j ; begin
5816: LD_INT 0
5818: PPUSH
5819: PPUSH
5820: PPUSH
5821: PPUSH
5822: PPUSH
5823: PPUSH
// engineerOkInside = UnitsInside ( depot ) ;
5824: LD_ADDR_VAR 0 8
5828: PUSH
5829: LD_VAR 0 2
5833: PPUSH
5834: CALL_OW 313
5838: ST_TO_ADDR
// engineerOkOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 750 ] , [ f_not , [ f_inside ] ] ] ) ;
5839: LD_ADDR_VAR 0 9
5843: PUSH
5844: LD_VAR 0 3
5848: PPUSH
5849: LD_INT 22
5851: PUSH
5852: LD_VAR 0 1
5856: PUSH
5857: EMPTY
5858: LIST
5859: LIST
5860: PUSH
5861: LD_INT 25
5863: PUSH
5864: LD_INT 2
5866: PUSH
5867: EMPTY
5868: LIST
5869: LIST
5870: PUSH
5871: LD_INT 24
5873: PUSH
5874: LD_INT 750
5876: PUSH
5877: EMPTY
5878: LIST
5879: LIST
5880: PUSH
5881: LD_INT 3
5883: PUSH
5884: LD_INT 54
5886: PUSH
5887: EMPTY
5888: LIST
5889: PUSH
5890: EMPTY
5891: LIST
5892: LIST
5893: PUSH
5894: EMPTY
5895: LIST
5896: LIST
5897: LIST
5898: LIST
5899: PPUSH
5900: CALL_OW 70
5904: ST_TO_ADDR
// buildings_list = FilterUnitsInArea ( baseArea , [ [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
5905: LD_ADDR_VAR 0 6
5909: PUSH
5910: LD_VAR 0 3
5914: PPUSH
5915: LD_INT 22
5917: PUSH
5918: LD_VAR 0 1
5922: PUSH
5923: EMPTY
5924: LIST
5925: LIST
5926: PUSH
5927: LD_INT 21
5929: PUSH
5930: LD_INT 3
5932: PUSH
5933: EMPTY
5934: LIST
5935: LIST
5936: PUSH
5937: LD_INT 3
5939: PUSH
5940: LD_INT 24
5942: PUSH
5943: LD_INT 1000
5945: PUSH
5946: EMPTY
5947: LIST
5948: LIST
5949: PUSH
5950: EMPTY
5951: LIST
5952: LIST
5953: PUSH
5954: EMPTY
5955: LIST
5956: LIST
5957: LIST
5958: PUSH
5959: EMPTY
5960: LIST
5961: PPUSH
5962: CALL_OW 70
5966: ST_TO_ADDR
// if not buildings_list and not FilterAllUnits ( [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 250 ] ] ) then
5967: LD_VAR 0 6
5971: NOT
5972: PUSH
5973: LD_INT 22
5975: PUSH
5976: LD_VAR 0 1
5980: PUSH
5981: EMPTY
5982: LIST
5983: LIST
5984: PUSH
5985: LD_INT 25
5987: PUSH
5988: LD_INT 2
5990: PUSH
5991: EMPTY
5992: LIST
5993: LIST
5994: PUSH
5995: LD_INT 24
5997: PUSH
5998: LD_INT 250
6000: PUSH
6001: EMPTY
6002: LIST
6003: LIST
6004: PUSH
6005: EMPTY
6006: LIST
6007: LIST
6008: LIST
6009: PPUSH
6010: CALL_OW 69
6014: NOT
6015: AND
6016: IFFALSE 6020
// exit ;
6018: GO 6202
// if buildings_list > 0 and engineerOkInside then
6020: LD_VAR 0 6
6024: PUSH
6025: LD_INT 0
6027: GREATER
6028: PUSH
6029: LD_VAR 0 8
6033: AND
6034: IFFALSE 6045
// ComExitBuilding ( engineerOkInside ) ;
6036: LD_VAR 0 8
6040: PPUSH
6041: CALL_OW 122
// if buildings_list > 0 and engineerOkOutside > 0 then
6045: LD_VAR 0 6
6049: PUSH
6050: LD_INT 0
6052: GREATER
6053: PUSH
6054: LD_VAR 0 9
6058: PUSH
6059: LD_INT 0
6061: GREATER
6062: AND
6063: IFFALSE 6083
// ComRepairBuilding ( engineerOkOutside , buildings_list [ 1 ] ) ;
6065: LD_VAR 0 9
6069: PPUSH
6070: LD_VAR 0 6
6074: PUSH
6075: LD_INT 1
6077: ARRAY
6078: PPUSH
6079: CALL_OW 130
// if buildings_list = 0 and destroyedBuildings = 0 and engineerOkOutside > 0 then
6083: LD_VAR 0 6
6087: PUSH
6088: LD_INT 0
6090: EQUAL
6091: PUSH
6092: LD_VAR 0 4
6096: PUSH
6097: LD_INT 0
6099: EQUAL
6100: AND
6101: PUSH
6102: LD_VAR 0 9
6106: PUSH
6107: LD_INT 0
6109: GREATER
6110: AND
6111: IFFALSE 6127
// ComEnterUnit ( engineerOkOutside , depot ) ;
6113: LD_VAR 0 9
6117: PPUSH
6118: LD_VAR 0 2
6122: PPUSH
6123: CALL_OW 120
// if engineerOkOutside > 0 and buildings_list = 0 and destroyedBuildings > 0 then
6127: LD_VAR 0 9
6131: PUSH
6132: LD_INT 0
6134: GREATER
6135: PUSH
6136: LD_VAR 0 6
6140: PUSH
6141: LD_INT 0
6143: EQUAL
6144: AND
6145: PUSH
6146: LD_VAR 0 4
6150: PUSH
6151: LD_INT 0
6153: GREATER
6154: AND
6155: IFFALSE 6202
// ComBuild ( engineerOkOutside , destroyedBuildings [ 1 ] , destroyedBuildings [ 2 ] , destroyedBuildings [ 3 ] , destroyedBuildings [ 4 ] ) ;
6157: LD_VAR 0 9
6161: PPUSH
6162: LD_VAR 0 4
6166: PUSH
6167: LD_INT 1
6169: ARRAY
6170: PPUSH
6171: LD_VAR 0 4
6175: PUSH
6176: LD_INT 2
6178: ARRAY
6179: PPUSH
6180: LD_VAR 0 4
6184: PUSH
6185: LD_INT 3
6187: ARRAY
6188: PPUSH
6189: LD_VAR 0 4
6193: PUSH
6194: LD_INT 4
6196: ARRAY
6197: PPUSH
6198: CALL_OW 145
// end ;
6202: LD_VAR 0 5
6206: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , sci_listOutside , i , j , damageUnits , unitsToHeal , tmp , rnd ; begin
6207: LD_INT 0
6209: PPUSH
6210: PPUSH
6211: PPUSH
6212: PPUSH
6213: PPUSH
6214: PPUSH
6215: PPUSH
6216: PPUSH
6217: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] , [ f_nation , 2 ] , [ f_lives , 251 ] ] ) ;
6218: LD_ADDR_VAR 0 6
6222: PUSH
6223: LD_INT 22
6225: PUSH
6226: LD_VAR 0 1
6230: PUSH
6231: EMPTY
6232: LIST
6233: LIST
6234: PUSH
6235: LD_INT 25
6237: PUSH
6238: LD_INT 4
6240: PUSH
6241: EMPTY
6242: LIST
6243: LIST
6244: PUSH
6245: LD_INT 23
6247: PUSH
6248: LD_INT 2
6250: PUSH
6251: EMPTY
6252: LIST
6253: LIST
6254: PUSH
6255: LD_INT 24
6257: PUSH
6258: LD_INT 251
6260: PUSH
6261: EMPTY
6262: LIST
6263: LIST
6264: PUSH
6265: EMPTY
6266: LIST
6267: LIST
6268: LIST
6269: LIST
6270: PPUSH
6271: CALL_OW 69
6275: ST_TO_ADDR
// sci_listOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_nation , 2 ] , [ f_class , 4 ] , [ f_ok ] ] ) ;
6276: LD_ADDR_VAR 0 7
6280: PUSH
6281: LD_VAR 0 3
6285: PPUSH
6286: LD_INT 22
6288: PUSH
6289: LD_VAR 0 1
6293: PUSH
6294: EMPTY
6295: LIST
6296: LIST
6297: PUSH
6298: LD_INT 23
6300: PUSH
6301: LD_INT 2
6303: PUSH
6304: EMPTY
6305: LIST
6306: LIST
6307: PUSH
6308: LD_INT 25
6310: PUSH
6311: LD_INT 4
6313: PUSH
6314: EMPTY
6315: LIST
6316: LIST
6317: PUSH
6318: LD_INT 50
6320: PUSH
6321: EMPTY
6322: LIST
6323: PUSH
6324: EMPTY
6325: LIST
6326: LIST
6327: LIST
6328: LIST
6329: PPUSH
6330: CALL_OW 70
6334: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
6335: LD_ADDR_VAR 0 10
6339: PUSH
6340: LD_VAR 0 3
6344: PPUSH
6345: LD_INT 22
6347: PUSH
6348: LD_VAR 0 1
6352: PUSH
6353: EMPTY
6354: LIST
6355: LIST
6356: PUSH
6357: LD_INT 21
6359: PUSH
6360: LD_INT 1
6362: PUSH
6363: EMPTY
6364: LIST
6365: LIST
6366: PUSH
6367: LD_INT 3
6369: PUSH
6370: LD_INT 25
6372: PUSH
6373: LD_INT 3
6375: PUSH
6376: EMPTY
6377: LIST
6378: LIST
6379: PUSH
6380: EMPTY
6381: LIST
6382: LIST
6383: PUSH
6384: LD_INT 3
6386: PUSH
6387: LD_INT 24
6389: PUSH
6390: LD_INT 750
6392: PUSH
6393: EMPTY
6394: LIST
6395: LIST
6396: PUSH
6397: EMPTY
6398: LIST
6399: LIST
6400: PUSH
6401: EMPTY
6402: LIST
6403: LIST
6404: LIST
6405: LIST
6406: PPUSH
6407: CALL_OW 70
6411: ST_TO_ADDR
// unitsToHeal = FilterUnitsInArea ( healArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
6412: LD_ADDR_VAR 0 11
6416: PUSH
6417: LD_VAR 0 2
6421: PPUSH
6422: LD_INT 22
6424: PUSH
6425: LD_VAR 0 1
6429: PUSH
6430: EMPTY
6431: LIST
6432: LIST
6433: PUSH
6434: LD_INT 21
6436: PUSH
6437: LD_INT 1
6439: PUSH
6440: EMPTY
6441: LIST
6442: LIST
6443: PUSH
6444: LD_INT 3
6446: PUSH
6447: LD_INT 25
6449: PUSH
6450: LD_INT 3
6452: PUSH
6453: EMPTY
6454: LIST
6455: LIST
6456: PUSH
6457: EMPTY
6458: LIST
6459: LIST
6460: PUSH
6461: LD_INT 3
6463: PUSH
6464: LD_INT 24
6466: PUSH
6467: LD_INT 1000
6469: PUSH
6470: EMPTY
6471: LIST
6472: LIST
6473: PUSH
6474: EMPTY
6475: LIST
6476: LIST
6477: PUSH
6478: EMPTY
6479: LIST
6480: LIST
6481: LIST
6482: LIST
6483: PPUSH
6484: CALL_OW 70
6488: ST_TO_ADDR
// if not damageUnits and not unitsToHeal and not sci_list then
6489: LD_VAR 0 10
6493: NOT
6494: PUSH
6495: LD_VAR 0 11
6499: NOT
6500: AND
6501: PUSH
6502: LD_VAR 0 6
6506: NOT
6507: AND
6508: IFFALSE 6512
// exit ;
6510: GO 6746
// if damageUnits > 0 and sci_list > 0 then
6512: LD_VAR 0 10
6516: PUSH
6517: LD_INT 0
6519: GREATER
6520: PUSH
6521: LD_VAR 0 6
6525: PUSH
6526: LD_INT 0
6528: GREATER
6529: AND
6530: IFFALSE 6546
// ComMoveToArea ( damageUnits , healArea ) ;
6532: LD_VAR 0 10
6536: PPUSH
6537: LD_VAR 0 2
6541: PPUSH
6542: CALL_OW 113
// if unitsToHeal > 0 and sci_list > 0 then
6546: LD_VAR 0 11
6550: PUSH
6551: LD_INT 0
6553: GREATER
6554: PUSH
6555: LD_VAR 0 6
6559: PUSH
6560: LD_INT 0
6562: GREATER
6563: AND
6564: IFFALSE 6575
// ComExitBuilding ( sci_list ) ;
6566: LD_VAR 0 6
6570: PPUSH
6571: CALL_OW 122
// if unitsToHeal > 0 and sci_listOutside > 0 then
6575: LD_VAR 0 11
6579: PUSH
6580: LD_INT 0
6582: GREATER
6583: PUSH
6584: LD_VAR 0 7
6588: PUSH
6589: LD_INT 0
6591: GREATER
6592: AND
6593: IFFALSE 6613
// ComHeal ( sci_listOutside , unitsToHeal [ 1 ] ) ;
6595: LD_VAR 0 7
6599: PPUSH
6600: LD_VAR 0 11
6604: PUSH
6605: LD_INT 1
6607: ARRAY
6608: PPUSH
6609: CALL_OW 128
// if damageUnits = 0 and unitsToHeal = 0 and sci_listOutside > 0 then
6613: LD_VAR 0 10
6617: PUSH
6618: LD_INT 0
6620: EQUAL
6621: PUSH
6622: LD_VAR 0 11
6626: PUSH
6627: LD_INT 0
6629: EQUAL
6630: AND
6631: PUSH
6632: LD_VAR 0 7
6636: PUSH
6637: LD_INT 0
6639: GREATER
6640: AND
6641: IFFALSE 6746
// begin tmp = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_btype , b_lab_full ] ] ) ;
6643: LD_ADDR_VAR 0 12
6647: PUSH
6648: LD_INT 22
6650: PUSH
6651: LD_VAR 0 1
6655: PUSH
6656: EMPTY
6657: LIST
6658: LIST
6659: PUSH
6660: LD_INT 21
6662: PUSH
6663: LD_INT 3
6665: PUSH
6666: EMPTY
6667: LIST
6668: LIST
6669: PUSH
6670: LD_INT 30
6672: PUSH
6673: LD_INT 8
6675: PUSH
6676: EMPTY
6677: LIST
6678: LIST
6679: PUSH
6680: EMPTY
6681: LIST
6682: LIST
6683: LIST
6684: PPUSH
6685: CALL_OW 69
6689: ST_TO_ADDR
// rnd = rand ( 1 , tmp ) ;
6690: LD_ADDR_VAR 0 13
6694: PUSH
6695: LD_INT 1
6697: PPUSH
6698: LD_VAR 0 12
6702: PPUSH
6703: CALL_OW 12
6707: ST_TO_ADDR
// ComEnterUnit ( UnitFilter ( sci_listOutside , [ f_not , [ f_hastask ] ] ) , tmp [ rnd ] ) ;
6708: LD_VAR 0 7
6712: PPUSH
6713: LD_INT 3
6715: PUSH
6716: LD_INT 60
6718: PUSH
6719: EMPTY
6720: LIST
6721: PUSH
6722: EMPTY
6723: LIST
6724: LIST
6725: PPUSH
6726: CALL_OW 72
6730: PPUSH
6731: LD_VAR 0 12
6735: PUSH
6736: LD_VAR 0 13
6740: ARRAY
6741: PPUSH
6742: CALL_OW 120
// end ; end ;
6746: LD_VAR 0 5
6750: RET
// export function BuildingVehicleEnemy ( fabric , vehCount , weaponTab , engine , control , chassis ) ; var i , weapon ; begin
6751: LD_INT 0
6753: PPUSH
6754: PPUSH
6755: PPUSH
// for i = 1 to vehCount do
6756: LD_ADDR_VAR 0 8
6760: PUSH
6761: DOUBLE
6762: LD_INT 1
6764: DEC
6765: ST_TO_ADDR
6766: LD_VAR 0 2
6770: PUSH
6771: FOR_TO
6772: IFFALSE 6819
// AddComConstruct ( fabric , chassis , engine , control , weaponTab [ Rand ( 1 , weaponTab ) ] ) ;
6774: LD_VAR 0 1
6778: PPUSH
6779: LD_VAR 0 6
6783: PPUSH
6784: LD_VAR 0 4
6788: PPUSH
6789: LD_VAR 0 5
6793: PPUSH
6794: LD_VAR 0 3
6798: PUSH
6799: LD_INT 1
6801: PPUSH
6802: LD_VAR 0 3
6806: PPUSH
6807: CALL_OW 12
6811: ARRAY
6812: PPUSH
6813: CALL_OW 185
6817: GO 6771
6819: POP
6820: POP
// end ;
6821: LD_VAR 0 7
6825: RET
// export function EnemyVehicleAttack ( side ) ; var i , tmp , target1 , target2 ; begin
6826: LD_INT 0
6828: PPUSH
6829: PPUSH
6830: PPUSH
6831: PPUSH
6832: PPUSH
// repeat wait ( 0 0$1 ) ;
6833: LD_INT 35
6835: PPUSH
6836: CALL_OW 67
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) > 0 then
6840: LD_INT 22
6842: PUSH
6843: LD_VAR 0 1
6847: PUSH
6848: EMPTY
6849: LIST
6850: LIST
6851: PUSH
6852: LD_INT 21
6854: PUSH
6855: LD_INT 2
6857: PUSH
6858: EMPTY
6859: LIST
6860: LIST
6861: PUSH
6862: EMPTY
6863: LIST
6864: LIST
6865: PPUSH
6866: CALL_OW 69
6870: PUSH
6871: LD_INT 0
6873: GREATER
6874: IFFALSE 7098
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) do
6876: LD_ADDR_VAR 0 3
6880: PUSH
6881: LD_INT 22
6883: PUSH
6884: LD_VAR 0 1
6888: PUSH
6889: EMPTY
6890: LIST
6891: LIST
6892: PUSH
6893: LD_INT 21
6895: PUSH
6896: LD_INT 2
6898: PUSH
6899: EMPTY
6900: LIST
6901: LIST
6902: PUSH
6903: EMPTY
6904: LIST
6905: LIST
6906: PPUSH
6907: CALL_OW 69
6911: PUSH
6912: FOR_IN
6913: IFFALSE 7096
// begin wait ( 0 0$1 ) ;
6915: LD_INT 35
6917: PPUSH
6918: CALL_OW 67
// target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
6922: LD_ADDR_VAR 0 5
6926: PUSH
6927: LD_INT 81
6929: PUSH
6930: LD_VAR 0 1
6934: PUSH
6935: EMPTY
6936: LIST
6937: LIST
6938: PPUSH
6939: CALL_OW 69
6943: PPUSH
6944: LD_VAR 0 3
6948: PPUSH
6949: CALL_OW 74
6953: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
6954: LD_ADDR_VAR 0 6
6958: PUSH
6959: LD_INT 81
6961: PUSH
6962: LD_VAR 0 1
6966: PUSH
6967: EMPTY
6968: LIST
6969: LIST
6970: PUSH
6971: LD_INT 2
6973: PUSH
6974: LD_INT 59
6976: PUSH
6977: EMPTY
6978: LIST
6979: PUSH
6980: LD_INT 21
6982: PUSH
6983: LD_INT 1
6985: PUSH
6986: EMPTY
6987: LIST
6988: LIST
6989: PUSH
6990: LD_INT 21
6992: PUSH
6993: LD_INT 2
6995: PUSH
6996: EMPTY
6997: LIST
6998: LIST
6999: PUSH
7000: EMPTY
7001: LIST
7002: LIST
7003: LIST
7004: LIST
7005: PUSH
7006: EMPTY
7007: LIST
7008: LIST
7009: PUSH
7010: EMPTY
7011: LIST
7012: PPUSH
7013: CALL_OW 69
7017: PPUSH
7018: LD_VAR 0 3
7022: PPUSH
7023: CALL_OW 74
7027: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
7028: LD_VAR 0 3
7032: PPUSH
7033: LD_VAR 0 5
7037: PPUSH
7038: CALL_OW 296
7042: PUSH
7043: LD_INT 8
7045: PLUS
7046: PUSH
7047: LD_VAR 0 3
7051: PPUSH
7052: LD_VAR 0 6
7056: PPUSH
7057: CALL_OW 296
7061: LESS
7062: IFFALSE 7080
// begin ComAttackUnit ( i , target1 ) ;
7064: LD_VAR 0 3
7068: PPUSH
7069: LD_VAR 0 5
7073: PPUSH
7074: CALL_OW 115
// end else
7078: GO 7094
// begin ComAttackUnit ( i , target2 ) ;
7080: LD_VAR 0 3
7084: PPUSH
7085: LD_VAR 0 6
7089: PPUSH
7090: CALL_OW 115
// end ; end ;
7094: GO 6912
7096: POP
7097: POP
// end ; until FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) = 0 ;
7098: LD_INT 22
7100: PUSH
7101: LD_VAR 0 1
7105: PUSH
7106: EMPTY
7107: LIST
7108: LIST
7109: PUSH
7110: LD_INT 21
7112: PUSH
7113: LD_INT 2
7115: PUSH
7116: EMPTY
7117: LIST
7118: LIST
7119: PUSH
7120: EMPTY
7121: LIST
7122: LIST
7123: PPUSH
7124: CALL_OW 69
7128: PUSH
7129: LD_INT 0
7131: EQUAL
7132: IFFALSE 6833
// end ;
7134: LD_VAR 0 2
7138: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehEngine , vehControl , RUWeapons , ARWeapons , AMWeapon , targetSide ) ; var i , j , un , veh , ruChassisTab , arChassisTab , amChassisTab , vehicleOK_list , target1 , target2 ; begin
7139: LD_INT 0
7141: PPUSH
7142: PPUSH
7143: PPUSH
7144: PPUSH
7145: PPUSH
7146: PPUSH
7147: PPUSH
7148: PPUSH
7149: PPUSH
7150: PPUSH
7151: PPUSH
// amChassisTab = [ ] ;
7152: LD_ADDR_VAR 0 19
7156: PUSH
7157: EMPTY
7158: ST_TO_ADDR
// arChassisTab = [ ] ;
7159: LD_ADDR_VAR 0 18
7163: PUSH
7164: EMPTY
7165: ST_TO_ADDR
// ruChassisTab = [ ] ;
7166: LD_ADDR_VAR 0 17
7170: PUSH
7171: EMPTY
7172: ST_TO_ADDR
// repeat wait ( 0 0$01 ) ;
7173: LD_INT 35
7175: PPUSH
7176: CALL_OW 67
// if nation = 1 then
7180: LD_VAR 0 5
7184: PUSH
7185: LD_INT 1
7187: EQUAL
7188: IFFALSE 7690
// begin uc_side = side ;
7190: LD_ADDR_OWVAR 20
7194: PUSH
7195: LD_VAR 0 2
7199: ST_TO_ADDR
// uc_nation = nation ;
7200: LD_ADDR_OWVAR 21
7204: PUSH
7205: LD_VAR 0 5
7209: ST_TO_ADDR
// vc_engine = vehengine ;
7210: LD_ADDR_OWVAR 39
7214: PUSH
7215: LD_VAR 0 6
7219: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
7220: LD_ADDR_OWVAR 38
7224: PUSH
7225: LD_VAR 0 7
7229: PUSH
7230: LD_INT 1
7232: PPUSH
7233: LD_VAR 0 7
7237: PPUSH
7238: CALL_OW 12
7242: ARRAY
7243: ST_TO_ADDR
// vc_weapon = AMWeapon [ Rand ( 1 , AMWeapon ) ] ;
7244: LD_ADDR_OWVAR 40
7248: PUSH
7249: LD_VAR 0 10
7253: PUSH
7254: LD_INT 1
7256: PPUSH
7257: LD_VAR 0 10
7261: PPUSH
7262: CALL_OW 12
7266: ARRAY
7267: ST_TO_ADDR
// if vc_weapon = 2 or vc_weapon = 3 then
7268: LD_OWVAR 40
7272: PUSH
7273: LD_INT 2
7275: EQUAL
7276: PUSH
7277: LD_OWVAR 40
7281: PUSH
7282: LD_INT 3
7284: EQUAL
7285: OR
7286: IFFALSE 7339
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
7288: LD_ADDR_VAR 0 19
7292: PUSH
7293: LD_INT 1
7295: PUSH
7296: LD_INT 2
7298: PUSH
7299: LD_INT 3
7301: PUSH
7302: LD_INT 4
7304: PUSH
7305: LD_INT 5
7307: PUSH
7308: EMPTY
7309: LIST
7310: LIST
7311: LIST
7312: LIST
7313: LIST
7314: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7315: LD_ADDR_OWVAR 37
7319: PUSH
7320: LD_VAR 0 19
7324: PUSH
7325: LD_INT 1
7327: PPUSH
7328: LD_VAR 0 19
7332: PPUSH
7333: CALL_OW 12
7337: ARRAY
7338: ST_TO_ADDR
// end ; if vc_weapon = 4 or vc_weapon = 5 or vc_weapon = 9 or vc_weapon = 11 or vc_weapon = 7 then
7339: LD_OWVAR 40
7343: PUSH
7344: LD_INT 4
7346: EQUAL
7347: PUSH
7348: LD_OWVAR 40
7352: PUSH
7353: LD_INT 5
7355: EQUAL
7356: OR
7357: PUSH
7358: LD_OWVAR 40
7362: PUSH
7363: LD_INT 9
7365: EQUAL
7366: OR
7367: PUSH
7368: LD_OWVAR 40
7372: PUSH
7373: LD_INT 11
7375: EQUAL
7376: OR
7377: PUSH
7378: LD_OWVAR 40
7382: PUSH
7383: LD_INT 7
7385: EQUAL
7386: OR
7387: IFFALSE 7436
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
7389: LD_ADDR_VAR 0 19
7393: PUSH
7394: LD_INT 2
7396: PUSH
7397: LD_INT 3
7399: PUSH
7400: LD_INT 4
7402: PUSH
7403: LD_INT 5
7405: PUSH
7406: EMPTY
7407: LIST
7408: LIST
7409: LIST
7410: LIST
7411: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7412: LD_ADDR_OWVAR 37
7416: PUSH
7417: LD_VAR 0 19
7421: PUSH
7422: LD_INT 1
7424: PPUSH
7425: LD_VAR 0 19
7429: PPUSH
7430: CALL_OW 12
7434: ARRAY
7435: ST_TO_ADDR
// end ; if vc_weapon = 8 or vc_weapon = 6 or vc_weapon = 10 then
7436: LD_OWVAR 40
7440: PUSH
7441: LD_INT 8
7443: EQUAL
7444: PUSH
7445: LD_OWVAR 40
7449: PUSH
7450: LD_INT 6
7452: EQUAL
7453: OR
7454: PUSH
7455: LD_OWVAR 40
7459: PUSH
7460: LD_INT 10
7462: EQUAL
7463: OR
7464: IFFALSE 7505
// begin amChassisTab = [ 4 , 5 ] ;
7466: LD_ADDR_VAR 0 19
7470: PUSH
7471: LD_INT 4
7473: PUSH
7474: LD_INT 5
7476: PUSH
7477: EMPTY
7478: LIST
7479: LIST
7480: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7481: LD_ADDR_OWVAR 37
7485: PUSH
7486: LD_VAR 0 19
7490: PUSH
7491: LD_INT 1
7493: PPUSH
7494: LD_VAR 0 19
7498: PPUSH
7499: CALL_OW 12
7503: ARRAY
7504: ST_TO_ADDR
// end ; veh = CreateVehicle ;
7505: LD_ADDR_VAR 0 16
7509: PUSH
7510: CALL_OW 45
7514: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
7515: LD_VAR 0 16
7519: PPUSH
7520: LD_VAR 0 1
7524: PPUSH
7525: LD_INT 0
7527: PPUSH
7528: CALL_OW 49
// if vc_control = 1 then
7532: LD_OWVAR 38
7536: PUSH
7537: LD_INT 1
7539: EQUAL
7540: IFFALSE 7676
// begin hc_gallery =  ;
7542: LD_ADDR_OWVAR 33
7546: PUSH
7547: LD_STRING 
7549: ST_TO_ADDR
// hc_name =  ;
7550: LD_ADDR_OWVAR 26
7554: PUSH
7555: LD_STRING 
7557: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7558: LD_ADDR_OWVAR 29
7562: PUSH
7563: LD_INT 9
7565: PPUSH
7566: LD_INT 11
7568: PPUSH
7569: CALL_OW 12
7573: PUSH
7574: LD_INT 10
7576: PPUSH
7577: LD_INT 12
7579: PPUSH
7580: CALL_OW 12
7584: PUSH
7585: EMPTY
7586: LIST
7587: LIST
7588: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
7589: LD_ADDR_OWVAR 31
7593: PUSH
7594: LD_VAR 0 4
7598: PUSH
7599: LD_VAR 0 4
7603: PUSH
7604: LD_VAR 0 4
7608: PUSH
7609: LD_VAR 0 4
7613: PUSH
7614: EMPTY
7615: LIST
7616: LIST
7617: LIST
7618: LIST
7619: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7620: LD_ADDR_OWVAR 27
7624: PUSH
7625: LD_INT 1
7627: PPUSH
7628: LD_INT 2
7630: PPUSH
7631: CALL_OW 12
7635: ST_TO_ADDR
// hc_class = 3 ;
7636: LD_ADDR_OWVAR 28
7640: PUSH
7641: LD_INT 3
7643: ST_TO_ADDR
// hc_importance = 0 ;
7644: LD_ADDR_OWVAR 32
7648: PUSH
7649: LD_INT 0
7651: ST_TO_ADDR
// un = CreateHuman ;
7652: LD_ADDR_VAR 0 15
7656: PUSH
7657: CALL_OW 44
7661: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
7662: LD_VAR 0 15
7666: PPUSH
7667: LD_VAR 0 16
7671: PPUSH
7672: CALL_OW 52
// end ; i = i + 1 ;
7676: LD_ADDR_VAR 0 13
7680: PUSH
7681: LD_VAR 0 13
7685: PUSH
7686: LD_INT 1
7688: PLUS
7689: ST_TO_ADDR
// end ; if nation = 2 then
7690: LD_VAR 0 5
7694: PUSH
7695: LD_INT 2
7697: EQUAL
7698: IFFALSE 8123
// begin uc_side = side ;
7700: LD_ADDR_OWVAR 20
7704: PUSH
7705: LD_VAR 0 2
7709: ST_TO_ADDR
// uc_nation = nation ;
7710: LD_ADDR_OWVAR 21
7714: PUSH
7715: LD_VAR 0 5
7719: ST_TO_ADDR
// vc_engine = vehengine ;
7720: LD_ADDR_OWVAR 39
7724: PUSH
7725: LD_VAR 0 6
7729: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
7730: LD_ADDR_OWVAR 38
7734: PUSH
7735: LD_VAR 0 7
7739: PUSH
7740: LD_INT 1
7742: PPUSH
7743: LD_VAR 0 7
7747: PPUSH
7748: CALL_OW 12
7752: ARRAY
7753: ST_TO_ADDR
// vc_weapon = ARWeapons [ Rand ( 1 , ARWeapons ) ] ;
7754: LD_ADDR_OWVAR 40
7758: PUSH
7759: LD_VAR 0 9
7763: PUSH
7764: LD_INT 1
7766: PPUSH
7767: LD_VAR 0 9
7771: PPUSH
7772: CALL_OW 12
7776: ARRAY
7777: ST_TO_ADDR
// if vc_weapon = 24 or vc_weapon = 22 or vc_weapon = 23 or vc_weapon = 30 then
7778: LD_OWVAR 40
7782: PUSH
7783: LD_INT 24
7785: EQUAL
7786: PUSH
7787: LD_OWVAR 40
7791: PUSH
7792: LD_INT 22
7794: EQUAL
7795: OR
7796: PUSH
7797: LD_OWVAR 40
7801: PUSH
7802: LD_INT 23
7804: EQUAL
7805: OR
7806: PUSH
7807: LD_OWVAR 40
7811: PUSH
7812: LD_INT 30
7814: EQUAL
7815: OR
7816: IFFALSE 7853
// begin arChassisTab = [ 14 ] ;
7818: LD_ADDR_VAR 0 18
7822: PUSH
7823: LD_INT 14
7825: PUSH
7826: EMPTY
7827: LIST
7828: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
7829: LD_ADDR_OWVAR 37
7833: PUSH
7834: LD_VAR 0 18
7838: PUSH
7839: LD_INT 1
7841: PPUSH
7842: LD_VAR 0 18
7846: PPUSH
7847: CALL_OW 12
7851: ARRAY
7852: ST_TO_ADDR
// end ; if vc_weapon = 29 or vc_weapon = 28 or vc_weapon = 27 or vc_weapon = 26 or vc_weapon = 25 then
7853: LD_OWVAR 40
7857: PUSH
7858: LD_INT 29
7860: EQUAL
7861: PUSH
7862: LD_OWVAR 40
7866: PUSH
7867: LD_INT 28
7869: EQUAL
7870: OR
7871: PUSH
7872: LD_OWVAR 40
7876: PUSH
7877: LD_INT 27
7879: EQUAL
7880: OR
7881: PUSH
7882: LD_OWVAR 40
7886: PUSH
7887: LD_INT 26
7889: EQUAL
7890: OR
7891: PUSH
7892: LD_OWVAR 40
7896: PUSH
7897: LD_INT 25
7899: EQUAL
7900: OR
7901: IFFALSE 7938
// begin arChassisTab = [ 14 ] ;
7903: LD_ADDR_VAR 0 18
7907: PUSH
7908: LD_INT 14
7910: PUSH
7911: EMPTY
7912: LIST
7913: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
7914: LD_ADDR_OWVAR 37
7918: PUSH
7919: LD_VAR 0 18
7923: PUSH
7924: LD_INT 1
7926: PPUSH
7927: LD_VAR 0 18
7931: PPUSH
7932: CALL_OW 12
7936: ARRAY
7937: ST_TO_ADDR
// end ; veh = CreateVehicle ;
7938: LD_ADDR_VAR 0 16
7942: PUSH
7943: CALL_OW 45
7947: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
7948: LD_VAR 0 16
7952: PPUSH
7953: LD_VAR 0 1
7957: PPUSH
7958: LD_INT 0
7960: PPUSH
7961: CALL_OW 49
// if vc_control = 1 then
7965: LD_OWVAR 38
7969: PUSH
7970: LD_INT 1
7972: EQUAL
7973: IFFALSE 8109
// begin hc_gallery =  ;
7975: LD_ADDR_OWVAR 33
7979: PUSH
7980: LD_STRING 
7982: ST_TO_ADDR
// hc_name =  ;
7983: LD_ADDR_OWVAR 26
7987: PUSH
7988: LD_STRING 
7990: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7991: LD_ADDR_OWVAR 29
7995: PUSH
7996: LD_INT 9
7998: PPUSH
7999: LD_INT 11
8001: PPUSH
8002: CALL_OW 12
8006: PUSH
8007: LD_INT 10
8009: PPUSH
8010: LD_INT 12
8012: PPUSH
8013: CALL_OW 12
8017: PUSH
8018: EMPTY
8019: LIST
8020: LIST
8021: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8022: LD_ADDR_OWVAR 31
8026: PUSH
8027: LD_VAR 0 4
8031: PUSH
8032: LD_VAR 0 4
8036: PUSH
8037: LD_VAR 0 4
8041: PUSH
8042: LD_VAR 0 4
8046: PUSH
8047: EMPTY
8048: LIST
8049: LIST
8050: LIST
8051: LIST
8052: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8053: LD_ADDR_OWVAR 27
8057: PUSH
8058: LD_INT 1
8060: PPUSH
8061: LD_INT 2
8063: PPUSH
8064: CALL_OW 12
8068: ST_TO_ADDR
// hc_class = 3 ;
8069: LD_ADDR_OWVAR 28
8073: PUSH
8074: LD_INT 3
8076: ST_TO_ADDR
// hc_importance = 0 ;
8077: LD_ADDR_OWVAR 32
8081: PUSH
8082: LD_INT 0
8084: ST_TO_ADDR
// un = CreateHuman ;
8085: LD_ADDR_VAR 0 15
8089: PUSH
8090: CALL_OW 44
8094: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8095: LD_VAR 0 15
8099: PPUSH
8100: LD_VAR 0 16
8104: PPUSH
8105: CALL_OW 52
// end ; i = i + 1 ;
8109: LD_ADDR_VAR 0 13
8113: PUSH
8114: LD_VAR 0 13
8118: PUSH
8119: LD_INT 1
8121: PLUS
8122: ST_TO_ADDR
// end ; if nation = 3 then
8123: LD_VAR 0 5
8127: PUSH
8128: LD_INT 3
8130: EQUAL
8131: IFFALSE 8552
// begin uc_side = side ;
8133: LD_ADDR_OWVAR 20
8137: PUSH
8138: LD_VAR 0 2
8142: ST_TO_ADDR
// uc_nation = nation ;
8143: LD_ADDR_OWVAR 21
8147: PUSH
8148: LD_VAR 0 5
8152: ST_TO_ADDR
// vc_engine = vehengine ;
8153: LD_ADDR_OWVAR 39
8157: PUSH
8158: LD_VAR 0 6
8162: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8163: LD_ADDR_OWVAR 38
8167: PUSH
8168: LD_VAR 0 7
8172: PUSH
8173: LD_INT 1
8175: PPUSH
8176: LD_VAR 0 7
8180: PPUSH
8181: CALL_OW 12
8185: ARRAY
8186: ST_TO_ADDR
// vc_weapon = RUWeapons [ Rand ( 1 , RUWeapons ) ] ;
8187: LD_ADDR_OWVAR 40
8191: PUSH
8192: LD_VAR 0 8
8196: PUSH
8197: LD_INT 1
8199: PPUSH
8200: LD_VAR 0 8
8204: PPUSH
8205: CALL_OW 12
8209: ARRAY
8210: ST_TO_ADDR
// if vc_weapon = 42 or vc_weapon = 43 or vc_weapon = 44 or vc_weapon = 45 or vc_weapon = 49 then
8211: LD_OWVAR 40
8215: PUSH
8216: LD_INT 42
8218: EQUAL
8219: PUSH
8220: LD_OWVAR 40
8224: PUSH
8225: LD_INT 43
8227: EQUAL
8228: OR
8229: PUSH
8230: LD_OWVAR 40
8234: PUSH
8235: LD_INT 44
8237: EQUAL
8238: OR
8239: PUSH
8240: LD_OWVAR 40
8244: PUSH
8245: LD_INT 45
8247: EQUAL
8248: OR
8249: PUSH
8250: LD_OWVAR 40
8254: PUSH
8255: LD_INT 49
8257: EQUAL
8258: OR
8259: IFFALSE 8308
// begin ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
8261: LD_ADDR_VAR 0 17
8265: PUSH
8266: LD_INT 21
8268: PUSH
8269: LD_INT 22
8271: PUSH
8272: LD_INT 23
8274: PUSH
8275: LD_INT 24
8277: PUSH
8278: EMPTY
8279: LIST
8280: LIST
8281: LIST
8282: LIST
8283: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8284: LD_ADDR_OWVAR 37
8288: PUSH
8289: LD_VAR 0 17
8293: PUSH
8294: LD_INT 1
8296: PPUSH
8297: LD_VAR 0 17
8301: PPUSH
8302: CALL_OW 12
8306: ARRAY
8307: ST_TO_ADDR
// end ; if vc_weapon = 46 or vc_weapon = 47 then
8308: LD_OWVAR 40
8312: PUSH
8313: LD_INT 46
8315: EQUAL
8316: PUSH
8317: LD_OWVAR 40
8321: PUSH
8322: LD_INT 47
8324: EQUAL
8325: OR
8326: IFFALSE 8367
// begin ruChassisTab = [ 23 , 24 ] ;
8328: LD_ADDR_VAR 0 17
8332: PUSH
8333: LD_INT 23
8335: PUSH
8336: LD_INT 24
8338: PUSH
8339: EMPTY
8340: LIST
8341: LIST
8342: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8343: LD_ADDR_OWVAR 37
8347: PUSH
8348: LD_VAR 0 17
8352: PUSH
8353: LD_INT 1
8355: PPUSH
8356: LD_VAR 0 17
8360: PPUSH
8361: CALL_OW 12
8365: ARRAY
8366: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8367: LD_ADDR_VAR 0 16
8371: PUSH
8372: CALL_OW 45
8376: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8377: LD_VAR 0 16
8381: PPUSH
8382: LD_VAR 0 1
8386: PPUSH
8387: LD_INT 0
8389: PPUSH
8390: CALL_OW 49
// if vc_control = 1 then
8394: LD_OWVAR 38
8398: PUSH
8399: LD_INT 1
8401: EQUAL
8402: IFFALSE 8538
// begin hc_gallery =  ;
8404: LD_ADDR_OWVAR 33
8408: PUSH
8409: LD_STRING 
8411: ST_TO_ADDR
// hc_name =  ;
8412: LD_ADDR_OWVAR 26
8416: PUSH
8417: LD_STRING 
8419: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8420: LD_ADDR_OWVAR 29
8424: PUSH
8425: LD_INT 9
8427: PPUSH
8428: LD_INT 11
8430: PPUSH
8431: CALL_OW 12
8435: PUSH
8436: LD_INT 10
8438: PPUSH
8439: LD_INT 12
8441: PPUSH
8442: CALL_OW 12
8446: PUSH
8447: EMPTY
8448: LIST
8449: LIST
8450: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8451: LD_ADDR_OWVAR 31
8455: PUSH
8456: LD_VAR 0 4
8460: PUSH
8461: LD_VAR 0 4
8465: PUSH
8466: LD_VAR 0 4
8470: PUSH
8471: LD_VAR 0 4
8475: PUSH
8476: EMPTY
8477: LIST
8478: LIST
8479: LIST
8480: LIST
8481: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8482: LD_ADDR_OWVAR 27
8486: PUSH
8487: LD_INT 1
8489: PPUSH
8490: LD_INT 2
8492: PPUSH
8493: CALL_OW 12
8497: ST_TO_ADDR
// hc_class = 3 ;
8498: LD_ADDR_OWVAR 28
8502: PUSH
8503: LD_INT 3
8505: ST_TO_ADDR
// hc_importance = 0 ;
8506: LD_ADDR_OWVAR 32
8510: PUSH
8511: LD_INT 0
8513: ST_TO_ADDR
// un = CreateHuman ;
8514: LD_ADDR_VAR 0 15
8518: PUSH
8519: CALL_OW 44
8523: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8524: LD_VAR 0 15
8528: PPUSH
8529: LD_VAR 0 16
8533: PPUSH
8534: CALL_OW 52
// end ; i = i + 1 ;
8538: LD_ADDR_VAR 0 13
8542: PUSH
8543: LD_VAR 0 13
8547: PUSH
8548: LD_INT 1
8550: PLUS
8551: ST_TO_ADDR
// end ; until i = vehCount ;
8552: LD_VAR 0 13
8556: PUSH
8557: LD_VAR 0 3
8561: EQUAL
8562: IFFALSE 7173
// repeat wait ( 0 0$1 ) ;
8564: LD_INT 35
8566: PPUSH
8567: CALL_OW 67
// vehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 650 ] ] ) ;
8571: LD_ADDR_VAR 0 20
8575: PUSH
8576: LD_INT 22
8578: PUSH
8579: LD_VAR 0 2
8583: PUSH
8584: EMPTY
8585: LIST
8586: LIST
8587: PUSH
8588: LD_INT 21
8590: PUSH
8591: LD_INT 2
8593: PUSH
8594: EMPTY
8595: LIST
8596: LIST
8597: PUSH
8598: LD_INT 24
8600: PUSH
8601: LD_INT 650
8603: PUSH
8604: EMPTY
8605: LIST
8606: LIST
8607: PUSH
8608: EMPTY
8609: LIST
8610: LIST
8611: LIST
8612: PPUSH
8613: CALL_OW 69
8617: ST_TO_ADDR
// if vehicleOK_list > 0 then
8618: LD_VAR 0 20
8622: PUSH
8623: LD_INT 0
8625: GREATER
8626: IFFALSE 8817
// begin for i in vehicleOK_list do
8628: LD_ADDR_VAR 0 13
8632: PUSH
8633: LD_VAR 0 20
8637: PUSH
8638: FOR_IN
8639: IFFALSE 8815
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
8641: LD_ADDR_VAR 0 21
8645: PUSH
8646: LD_INT 81
8648: PUSH
8649: LD_VAR 0 2
8653: PUSH
8654: EMPTY
8655: LIST
8656: LIST
8657: PPUSH
8658: CALL_OW 69
8662: PPUSH
8663: LD_VAR 0 13
8667: PPUSH
8668: CALL_OW 74
8672: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
8673: LD_ADDR_VAR 0 22
8677: PUSH
8678: LD_INT 81
8680: PUSH
8681: LD_VAR 0 2
8685: PUSH
8686: EMPTY
8687: LIST
8688: LIST
8689: PUSH
8690: LD_INT 2
8692: PUSH
8693: LD_INT 59
8695: PUSH
8696: EMPTY
8697: LIST
8698: PUSH
8699: LD_INT 21
8701: PUSH
8702: LD_INT 1
8704: PUSH
8705: EMPTY
8706: LIST
8707: LIST
8708: PUSH
8709: LD_INT 21
8711: PUSH
8712: LD_INT 2
8714: PUSH
8715: EMPTY
8716: LIST
8717: LIST
8718: PUSH
8719: EMPTY
8720: LIST
8721: LIST
8722: LIST
8723: LIST
8724: PUSH
8725: EMPTY
8726: LIST
8727: LIST
8728: PUSH
8729: EMPTY
8730: LIST
8731: PPUSH
8732: CALL_OW 69
8736: PPUSH
8737: LD_VAR 0 13
8741: PPUSH
8742: CALL_OW 74
8746: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
8747: LD_VAR 0 13
8751: PPUSH
8752: LD_VAR 0 21
8756: PPUSH
8757: CALL_OW 296
8761: PUSH
8762: LD_INT 8
8764: PLUS
8765: PUSH
8766: LD_VAR 0 13
8770: PPUSH
8771: LD_VAR 0 22
8775: PPUSH
8776: CALL_OW 296
8780: LESS
8781: IFFALSE 8799
// begin ComAttackUnit ( i , target1 ) ;
8783: LD_VAR 0 13
8787: PPUSH
8788: LD_VAR 0 21
8792: PPUSH
8793: CALL_OW 115
// end else
8797: GO 8813
// begin ComAttackUnit ( i , target2 ) ;
8799: LD_VAR 0 13
8803: PPUSH
8804: LD_VAR 0 22
8808: PPUSH
8809: CALL_OW 115
// end ; end ;
8813: GO 8638
8815: POP
8816: POP
// end ; until ( FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ) = 0 ;
8817: LD_INT 22
8819: PUSH
8820: LD_VAR 0 2
8824: PUSH
8825: EMPTY
8826: LIST
8827: LIST
8828: PUSH
8829: LD_INT 21
8831: PUSH
8832: LD_INT 2
8834: PUSH
8835: EMPTY
8836: LIST
8837: LIST
8838: PUSH
8839: EMPTY
8840: LIST
8841: LIST
8842: PPUSH
8843: CALL_OW 69
8847: PUSH
8848: LD_INT 0
8850: EQUAL
8851: IFFALSE 8564
// end ;
8853: LD_VAR 0 12
8857: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetSide ) ; var i , j , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und , target1 , target2 ; begin
8858: LD_INT 0
8860: PPUSH
8861: PPUSH
8862: PPUSH
8863: PPUSH
8864: PPUSH
8865: PPUSH
8866: PPUSH
8867: PPUSH
8868: PPUSH
8869: PPUSH
8870: PPUSH
// for i = 1 to soldierCount do
8871: LD_ADDR_VAR 0 13
8875: PUSH
8876: DOUBLE
8877: LD_INT 1
8879: DEC
8880: ST_TO_ADDR
8881: LD_VAR 0 3
8885: PUSH
8886: FOR_TO
8887: IFFALSE 9032
// begin uc_side = side ;
8889: LD_ADDR_OWVAR 20
8893: PUSH
8894: LD_VAR 0 1
8898: ST_TO_ADDR
// uc_nation = nation ;
8899: LD_ADDR_OWVAR 21
8903: PUSH
8904: LD_VAR 0 2
8908: ST_TO_ADDR
// hc_gallery =  ;
8909: LD_ADDR_OWVAR 33
8913: PUSH
8914: LD_STRING 
8916: ST_TO_ADDR
// hc_name =  ;
8917: LD_ADDR_OWVAR 26
8921: PUSH
8922: LD_STRING 
8924: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
8925: LD_ADDR_OWVAR 29
8929: PUSH
8930: LD_INT 10
8932: PUSH
8933: LD_INT 10
8935: PUSH
8936: EMPTY
8937: LIST
8938: LIST
8939: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
8940: LD_ADDR_OWVAR 31
8944: PUSH
8945: LD_VAR 0 8
8949: PUSH
8950: LD_VAR 0 8
8954: PUSH
8955: LD_VAR 0 8
8959: PUSH
8960: LD_VAR 0 8
8964: PUSH
8965: EMPTY
8966: LIST
8967: LIST
8968: LIST
8969: LIST
8970: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8971: LD_ADDR_OWVAR 27
8975: PUSH
8976: LD_INT 1
8978: PPUSH
8979: LD_INT 2
8981: PPUSH
8982: CALL_OW 12
8986: ST_TO_ADDR
// hc_class = 1 ;
8987: LD_ADDR_OWVAR 28
8991: PUSH
8992: LD_INT 1
8994: ST_TO_ADDR
// hc_importance = 0 ;
8995: LD_ADDR_OWVAR 32
8999: PUSH
9000: LD_INT 0
9002: ST_TO_ADDR
// un = CreateHuman ;
9003: LD_ADDR_VAR 0 15
9007: PUSH
9008: CALL_OW 44
9012: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9013: LD_VAR 0 15
9017: PPUSH
9018: LD_VAR 0 9
9022: PPUSH
9023: LD_INT 0
9025: PPUSH
9026: CALL_OW 49
// end ;
9030: GO 8886
9032: POP
9033: POP
// for i = 1 to sniperCount do
9034: LD_ADDR_VAR 0 13
9038: PUSH
9039: DOUBLE
9040: LD_INT 1
9042: DEC
9043: ST_TO_ADDR
9044: LD_VAR 0 4
9048: PUSH
9049: FOR_TO
9050: IFFALSE 9187
// begin uc_side = side ;
9052: LD_ADDR_OWVAR 20
9056: PUSH
9057: LD_VAR 0 1
9061: ST_TO_ADDR
// uc_nation = nation ;
9062: LD_ADDR_OWVAR 21
9066: PUSH
9067: LD_VAR 0 2
9071: ST_TO_ADDR
// hc_gallery =  ;
9072: LD_ADDR_OWVAR 33
9076: PUSH
9077: LD_STRING 
9079: ST_TO_ADDR
// hc_name =  ;
9080: LD_ADDR_OWVAR 26
9084: PUSH
9085: LD_STRING 
9087: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9088: LD_ADDR_OWVAR 29
9092: PUSH
9093: LD_INT 10
9095: PUSH
9096: LD_INT 10
9098: PUSH
9099: EMPTY
9100: LIST
9101: LIST
9102: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9103: LD_ADDR_OWVAR 31
9107: PUSH
9108: LD_VAR 0 8
9112: PUSH
9113: LD_VAR 0 8
9117: PUSH
9118: LD_VAR 0 8
9122: PUSH
9123: LD_VAR 0 8
9127: PUSH
9128: EMPTY
9129: LIST
9130: LIST
9131: LIST
9132: LIST
9133: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9134: LD_ADDR_OWVAR 27
9138: PUSH
9139: LD_INT 1
9141: PPUSH
9142: LD_INT 2
9144: PPUSH
9145: CALL_OW 12
9149: ST_TO_ADDR
// hc_class = 5 ;
9150: LD_ADDR_OWVAR 28
9154: PUSH
9155: LD_INT 5
9157: ST_TO_ADDR
// un = CreateHuman ;
9158: LD_ADDR_VAR 0 15
9162: PUSH
9163: CALL_OW 44
9167: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9168: LD_VAR 0 15
9172: PPUSH
9173: LD_VAR 0 9
9177: PPUSH
9178: LD_INT 0
9180: PPUSH
9181: CALL_OW 49
// end ;
9185: GO 9049
9187: POP
9188: POP
// for i = 1 to bazookCount do
9189: LD_ADDR_VAR 0 13
9193: PUSH
9194: DOUBLE
9195: LD_INT 1
9197: DEC
9198: ST_TO_ADDR
9199: LD_VAR 0 5
9203: PUSH
9204: FOR_TO
9205: IFFALSE 9350
// begin uc_side = side ;
9207: LD_ADDR_OWVAR 20
9211: PUSH
9212: LD_VAR 0 1
9216: ST_TO_ADDR
// uc_nation = nation ;
9217: LD_ADDR_OWVAR 21
9221: PUSH
9222: LD_VAR 0 2
9226: ST_TO_ADDR
// hc_gallery =  ;
9227: LD_ADDR_OWVAR 33
9231: PUSH
9232: LD_STRING 
9234: ST_TO_ADDR
// hc_name =  ;
9235: LD_ADDR_OWVAR 26
9239: PUSH
9240: LD_STRING 
9242: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9243: LD_ADDR_OWVAR 29
9247: PUSH
9248: LD_INT 10
9250: PUSH
9251: LD_INT 10
9253: PUSH
9254: EMPTY
9255: LIST
9256: LIST
9257: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9258: LD_ADDR_OWVAR 31
9262: PUSH
9263: LD_VAR 0 8
9267: PUSH
9268: LD_VAR 0 8
9272: PUSH
9273: LD_VAR 0 8
9277: PUSH
9278: LD_VAR 0 8
9282: PUSH
9283: EMPTY
9284: LIST
9285: LIST
9286: LIST
9287: LIST
9288: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9289: LD_ADDR_OWVAR 27
9293: PUSH
9294: LD_INT 1
9296: PPUSH
9297: LD_INT 2
9299: PPUSH
9300: CALL_OW 12
9304: ST_TO_ADDR
// hc_class = 9 ;
9305: LD_ADDR_OWVAR 28
9309: PUSH
9310: LD_INT 9
9312: ST_TO_ADDR
// hc_importance = 0 ;
9313: LD_ADDR_OWVAR 32
9317: PUSH
9318: LD_INT 0
9320: ST_TO_ADDR
// un = CreateHuman ;
9321: LD_ADDR_VAR 0 15
9325: PUSH
9326: CALL_OW 44
9330: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9331: LD_VAR 0 15
9335: PPUSH
9336: LD_VAR 0 9
9340: PPUSH
9341: LD_INT 0
9343: PPUSH
9344: CALL_OW 49
// end ;
9348: GO 9204
9350: POP
9351: POP
// for i = 1 to mortalCount do
9352: LD_ADDR_VAR 0 13
9356: PUSH
9357: DOUBLE
9358: LD_INT 1
9360: DEC
9361: ST_TO_ADDR
9362: LD_VAR 0 6
9366: PUSH
9367: FOR_TO
9368: IFFALSE 9513
// begin uc_side = side ;
9370: LD_ADDR_OWVAR 20
9374: PUSH
9375: LD_VAR 0 1
9379: ST_TO_ADDR
// uc_nation = nation ;
9380: LD_ADDR_OWVAR 21
9384: PUSH
9385: LD_VAR 0 2
9389: ST_TO_ADDR
// hc_gallery =  ;
9390: LD_ADDR_OWVAR 33
9394: PUSH
9395: LD_STRING 
9397: ST_TO_ADDR
// hc_name =  ;
9398: LD_ADDR_OWVAR 26
9402: PUSH
9403: LD_STRING 
9405: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9406: LD_ADDR_OWVAR 29
9410: PUSH
9411: LD_INT 10
9413: PUSH
9414: LD_INT 10
9416: PUSH
9417: EMPTY
9418: LIST
9419: LIST
9420: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9421: LD_ADDR_OWVAR 31
9425: PUSH
9426: LD_VAR 0 8
9430: PUSH
9431: LD_VAR 0 8
9435: PUSH
9436: LD_VAR 0 8
9440: PUSH
9441: LD_VAR 0 8
9445: PUSH
9446: EMPTY
9447: LIST
9448: LIST
9449: LIST
9450: LIST
9451: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9452: LD_ADDR_OWVAR 27
9456: PUSH
9457: LD_INT 1
9459: PPUSH
9460: LD_INT 2
9462: PPUSH
9463: CALL_OW 12
9467: ST_TO_ADDR
// hc_class = 8 ;
9468: LD_ADDR_OWVAR 28
9472: PUSH
9473: LD_INT 8
9475: ST_TO_ADDR
// hc_importance = 0 ;
9476: LD_ADDR_OWVAR 32
9480: PUSH
9481: LD_INT 0
9483: ST_TO_ADDR
// un = CreateHuman ;
9484: LD_ADDR_VAR 0 15
9488: PUSH
9489: CALL_OW 44
9493: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9494: LD_VAR 0 15
9498: PPUSH
9499: LD_VAR 0 9
9503: PPUSH
9504: LD_INT 0
9506: PPUSH
9507: CALL_OW 49
// end ;
9511: GO 9367
9513: POP
9514: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
9515: LD_ADDR_VAR 0 18
9519: PUSH
9520: LD_INT 22
9522: PUSH
9523: LD_VAR 0 1
9527: PUSH
9528: EMPTY
9529: LIST
9530: LIST
9531: PUSH
9532: LD_INT 2
9534: PUSH
9535: LD_INT 25
9537: PUSH
9538: LD_INT 1
9540: PUSH
9541: EMPTY
9542: LIST
9543: LIST
9544: PUSH
9545: LD_INT 25
9547: PUSH
9548: LD_INT 5
9550: PUSH
9551: EMPTY
9552: LIST
9553: LIST
9554: PUSH
9555: LD_INT 25
9557: PUSH
9558: LD_INT 8
9560: PUSH
9561: EMPTY
9562: LIST
9563: LIST
9564: PUSH
9565: LD_INT 25
9567: PUSH
9568: LD_INT 9
9570: PUSH
9571: EMPTY
9572: LIST
9573: LIST
9574: PUSH
9575: EMPTY
9576: LIST
9577: LIST
9578: LIST
9579: LIST
9580: LIST
9581: PUSH
9582: EMPTY
9583: LIST
9584: LIST
9585: PPUSH
9586: CALL_OW 69
9590: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
9591: LD_ADDR_VAR 0 17
9595: PUSH
9596: LD_INT 22
9598: PUSH
9599: LD_VAR 0 1
9603: PUSH
9604: EMPTY
9605: LIST
9606: LIST
9607: PUSH
9608: LD_INT 25
9610: PUSH
9611: LD_INT 4
9613: PUSH
9614: EMPTY
9615: LIST
9616: LIST
9617: PUSH
9618: EMPTY
9619: LIST
9620: LIST
9621: PPUSH
9622: CALL_OW 69
9626: ST_TO_ADDR
// for i in medic_list do
9627: LD_ADDR_VAR 0 13
9631: PUSH
9632: LD_VAR 0 17
9636: PUSH
9637: FOR_IN
9638: IFFALSE 9656
// ComMoveToArea ( i , healArea ) ;
9640: LD_VAR 0 13
9644: PPUSH
9645: LD_VAR 0 10
9649: PPUSH
9650: CALL_OW 113
9654: GO 9637
9656: POP
9657: POP
// repeat wait ( 0 0$1 ) ;
9658: LD_INT 35
9660: PPUSH
9661: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
9665: LD_ADDR_VAR 0 16
9669: PUSH
9670: LD_INT 22
9672: PUSH
9673: LD_VAR 0 1
9677: PUSH
9678: EMPTY
9679: LIST
9680: LIST
9681: PUSH
9682: LD_INT 1
9684: PUSH
9685: LD_INT 3
9687: PUSH
9688: LD_INT 24
9690: PUSH
9691: LD_INT 550
9693: PUSH
9694: EMPTY
9695: LIST
9696: LIST
9697: PUSH
9698: EMPTY
9699: LIST
9700: LIST
9701: PUSH
9702: LD_INT 24
9704: PUSH
9705: LD_INT 250
9707: PUSH
9708: EMPTY
9709: LIST
9710: LIST
9711: PUSH
9712: EMPTY
9713: LIST
9714: LIST
9715: LIST
9716: PUSH
9717: EMPTY
9718: LIST
9719: LIST
9720: PPUSH
9721: CALL_OW 69
9725: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
9726: LD_ADDR_VAR 0 18
9730: PUSH
9731: LD_INT 22
9733: PUSH
9734: LD_VAR 0 1
9738: PUSH
9739: EMPTY
9740: LIST
9741: LIST
9742: PUSH
9743: LD_INT 2
9745: PUSH
9746: LD_INT 25
9748: PUSH
9749: LD_INT 1
9751: PUSH
9752: EMPTY
9753: LIST
9754: LIST
9755: PUSH
9756: LD_INT 25
9758: PUSH
9759: LD_INT 5
9761: PUSH
9762: EMPTY
9763: LIST
9764: LIST
9765: PUSH
9766: LD_INT 25
9768: PUSH
9769: LD_INT 8
9771: PUSH
9772: EMPTY
9773: LIST
9774: LIST
9775: PUSH
9776: LD_INT 25
9778: PUSH
9779: LD_INT 9
9781: PUSH
9782: EMPTY
9783: LIST
9784: LIST
9785: PUSH
9786: EMPTY
9787: LIST
9788: LIST
9789: LIST
9790: LIST
9791: LIST
9792: PUSH
9793: LD_INT 24
9795: PUSH
9796: LD_INT 1000
9798: PUSH
9799: EMPTY
9800: LIST
9801: LIST
9802: PUSH
9803: EMPTY
9804: LIST
9805: LIST
9806: LIST
9807: PPUSH
9808: CALL_OW 69
9812: ST_TO_ADDR
// for i in soldiersOK_list do
9813: LD_ADDR_VAR 0 13
9817: PUSH
9818: LD_VAR 0 18
9822: PUSH
9823: FOR_IN
9824: IFFALSE 10000
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
9826: LD_ADDR_VAR 0 21
9830: PUSH
9831: LD_INT 81
9833: PUSH
9834: LD_VAR 0 1
9838: PUSH
9839: EMPTY
9840: LIST
9841: LIST
9842: PPUSH
9843: CALL_OW 69
9847: PPUSH
9848: LD_VAR 0 13
9852: PPUSH
9853: CALL_OW 74
9857: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
9858: LD_ADDR_VAR 0 22
9862: PUSH
9863: LD_INT 81
9865: PUSH
9866: LD_VAR 0 1
9870: PUSH
9871: EMPTY
9872: LIST
9873: LIST
9874: PUSH
9875: LD_INT 2
9877: PUSH
9878: LD_INT 59
9880: PUSH
9881: EMPTY
9882: LIST
9883: PUSH
9884: LD_INT 21
9886: PUSH
9887: LD_INT 1
9889: PUSH
9890: EMPTY
9891: LIST
9892: LIST
9893: PUSH
9894: LD_INT 21
9896: PUSH
9897: LD_INT 2
9899: PUSH
9900: EMPTY
9901: LIST
9902: LIST
9903: PUSH
9904: EMPTY
9905: LIST
9906: LIST
9907: LIST
9908: LIST
9909: PUSH
9910: EMPTY
9911: LIST
9912: LIST
9913: PUSH
9914: EMPTY
9915: LIST
9916: PPUSH
9917: CALL_OW 69
9921: PPUSH
9922: LD_VAR 0 13
9926: PPUSH
9927: CALL_OW 74
9931: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
9932: LD_VAR 0 13
9936: PPUSH
9937: LD_VAR 0 21
9941: PPUSH
9942: CALL_OW 296
9946: PUSH
9947: LD_INT 8
9949: PLUS
9950: PUSH
9951: LD_VAR 0 13
9955: PPUSH
9956: LD_VAR 0 22
9960: PPUSH
9961: CALL_OW 296
9965: LESS
9966: IFFALSE 9984
// begin ComAttackUnit ( i , target1 ) ;
9968: LD_VAR 0 13
9972: PPUSH
9973: LD_VAR 0 21
9977: PPUSH
9978: CALL_OW 115
// end else
9982: GO 9998
// begin ComAttackUnit ( i , target2 ) ;
9984: LD_VAR 0 13
9988: PPUSH
9989: LD_VAR 0 22
9993: PPUSH
9994: CALL_OW 115
// end ; end ;
9998: GO 9823
10000: POP
10001: POP
// until soldiersOK_list = [ ] ;
10002: LD_VAR 0 18
10006: PUSH
10007: EMPTY
10008: EQUAL
10009: IFFALSE 9658
// end ; end_of_file
10011: LD_VAR 0 12
10015: RET
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10016: LD_VAR 0 1
10020: PPUSH
10021: CALL_OW 266
10025: PUSH
10026: LD_INT 0
10028: PUSH
10029: LD_INT 1
10031: PUSH
10032: EMPTY
10033: LIST
10034: LIST
10035: IN
10036: IFFALSE 10061
// SetBName ( b , @ & GetSide ( b ) ) ;
10038: LD_VAR 0 1
10042: PPUSH
10043: LD_STRING @
10045: PUSH
10046: LD_VAR 0 1
10050: PPUSH
10051: CALL_OW 255
10055: STR
10056: PPUSH
10057: CALL_OW 500
// end ;
10061: PPOPN 2
10063: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10064: LD_VAR 0 1
10068: PPUSH
10069: CALL_OW 266
10073: PUSH
10074: LD_INT 0
10076: PUSH
10077: LD_INT 1
10079: PUSH
10080: EMPTY
10081: LIST
10082: LIST
10083: IN
10084: IFFALSE 10109
// SetBName ( b , @ & GetSide ( b ) ) ;
10086: LD_VAR 0 1
10090: PPUSH
10091: LD_STRING @
10093: PUSH
10094: LD_VAR 0 1
10098: PPUSH
10099: CALL_OW 255
10103: STR
10104: PPUSH
10105: CALL_OW 500
// end ;
10109: PPOPN 3
10111: END
// on UnitDestroyed ( unit ) do begin if GetSide ( unit ) = randomedColors [ 1 ] and GetType ( unit ) = unit_building and GetDistUnitArea ( unit , RussianBase ) = 0 then
10112: LD_VAR 0 1
10116: PPUSH
10117: CALL_OW 255
10121: PUSH
10122: LD_EXP 41
10126: PUSH
10127: LD_INT 1
10129: ARRAY
10130: EQUAL
10131: PUSH
10132: LD_VAR 0 1
10136: PPUSH
10137: CALL_OW 247
10141: PUSH
10142: LD_INT 3
10144: EQUAL
10145: AND
10146: PUSH
10147: LD_VAR 0 1
10151: PPUSH
10152: LD_INT 1
10154: PPUSH
10155: CALL_OW 299
10159: PUSH
10160: LD_INT 0
10162: EQUAL
10163: AND
10164: IFFALSE 10856
// begin if GetBType ( unit ) = 31 or GetBType ( unit ) = 32 or GetBType ( unit ) = 36 or GetBType ( unit ) = 0 or GetBType ( unit ) = 24 or GetBType ( unit ) = 17 or GetBType ( unit ) = 25 or GetBType ( unit ) = 19 or GetBType ( unit ) = 20 or GetBType ( unit ) = 18 or GetBType ( unit ) = 21 or GetBType ( unit ) = 23 or GetBType ( unit ) = 16 or GetBType ( unit ) = 6 or GetBType ( unit ) = 29 or GetBType ( unit ) = 26 or GetBType ( unit ) = 30 or GetBType ( unit ) = 28 or GetBType ( unit ) = 27 or GetBType ( unit ) = 33 or GetBType ( unit ) = 2 or GetBType ( unit ) = 4 then
10166: LD_VAR 0 1
10170: PPUSH
10171: CALL_OW 266
10175: PUSH
10176: LD_INT 31
10178: EQUAL
10179: PUSH
10180: LD_VAR 0 1
10184: PPUSH
10185: CALL_OW 266
10189: PUSH
10190: LD_INT 32
10192: EQUAL
10193: OR
10194: PUSH
10195: LD_VAR 0 1
10199: PPUSH
10200: CALL_OW 266
10204: PUSH
10205: LD_INT 36
10207: EQUAL
10208: OR
10209: PUSH
10210: LD_VAR 0 1
10214: PPUSH
10215: CALL_OW 266
10219: PUSH
10220: LD_INT 0
10222: EQUAL
10223: OR
10224: PUSH
10225: LD_VAR 0 1
10229: PPUSH
10230: CALL_OW 266
10234: PUSH
10235: LD_INT 24
10237: EQUAL
10238: OR
10239: PUSH
10240: LD_VAR 0 1
10244: PPUSH
10245: CALL_OW 266
10249: PUSH
10250: LD_INT 17
10252: EQUAL
10253: OR
10254: PUSH
10255: LD_VAR 0 1
10259: PPUSH
10260: CALL_OW 266
10264: PUSH
10265: LD_INT 25
10267: EQUAL
10268: OR
10269: PUSH
10270: LD_VAR 0 1
10274: PPUSH
10275: CALL_OW 266
10279: PUSH
10280: LD_INT 19
10282: EQUAL
10283: OR
10284: PUSH
10285: LD_VAR 0 1
10289: PPUSH
10290: CALL_OW 266
10294: PUSH
10295: LD_INT 20
10297: EQUAL
10298: OR
10299: PUSH
10300: LD_VAR 0 1
10304: PPUSH
10305: CALL_OW 266
10309: PUSH
10310: LD_INT 18
10312: EQUAL
10313: OR
10314: PUSH
10315: LD_VAR 0 1
10319: PPUSH
10320: CALL_OW 266
10324: PUSH
10325: LD_INT 21
10327: EQUAL
10328: OR
10329: PUSH
10330: LD_VAR 0 1
10334: PPUSH
10335: CALL_OW 266
10339: PUSH
10340: LD_INT 23
10342: EQUAL
10343: OR
10344: PUSH
10345: LD_VAR 0 1
10349: PPUSH
10350: CALL_OW 266
10354: PUSH
10355: LD_INT 16
10357: EQUAL
10358: OR
10359: PUSH
10360: LD_VAR 0 1
10364: PPUSH
10365: CALL_OW 266
10369: PUSH
10370: LD_INT 6
10372: EQUAL
10373: OR
10374: PUSH
10375: LD_VAR 0 1
10379: PPUSH
10380: CALL_OW 266
10384: PUSH
10385: LD_INT 29
10387: EQUAL
10388: OR
10389: PUSH
10390: LD_VAR 0 1
10394: PPUSH
10395: CALL_OW 266
10399: PUSH
10400: LD_INT 26
10402: EQUAL
10403: OR
10404: PUSH
10405: LD_VAR 0 1
10409: PPUSH
10410: CALL_OW 266
10414: PUSH
10415: LD_INT 30
10417: EQUAL
10418: OR
10419: PUSH
10420: LD_VAR 0 1
10424: PPUSH
10425: CALL_OW 266
10429: PUSH
10430: LD_INT 28
10432: EQUAL
10433: OR
10434: PUSH
10435: LD_VAR 0 1
10439: PPUSH
10440: CALL_OW 266
10444: PUSH
10445: LD_INT 27
10447: EQUAL
10448: OR
10449: PUSH
10450: LD_VAR 0 1
10454: PPUSH
10455: CALL_OW 266
10459: PUSH
10460: LD_INT 33
10462: EQUAL
10463: OR
10464: PUSH
10465: LD_VAR 0 1
10469: PPUSH
10470: CALL_OW 266
10474: PUSH
10475: LD_INT 2
10477: EQUAL
10478: OR
10479: PUSH
10480: LD_VAR 0 1
10484: PPUSH
10485: CALL_OW 266
10489: PUSH
10490: LD_INT 4
10492: EQUAL
10493: OR
10494: IFFALSE 10580
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ GetBType ( unit ) ;
10496: LD_ADDR_EXP 39
10500: PUSH
10501: LD_EXP 39
10505: PUSH
10506: LD_VAR 0 1
10510: PPUSH
10511: CALL_OW 266
10515: ADD
10516: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10517: LD_ADDR_EXP 39
10521: PUSH
10522: LD_EXP 39
10526: PUSH
10527: LD_VAR 0 1
10531: PPUSH
10532: CALL_OW 250
10536: ADD
10537: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10538: LD_ADDR_EXP 39
10542: PUSH
10543: LD_EXP 39
10547: PUSH
10548: LD_VAR 0 1
10552: PPUSH
10553: CALL_OW 251
10557: ADD
10558: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10559: LD_ADDR_EXP 39
10563: PUSH
10564: LD_EXP 39
10568: PUSH
10569: LD_VAR 0 1
10573: PPUSH
10574: CALL_OW 254
10578: ADD
10579: ST_TO_ADDR
// end ; if GetBType ( unit ) = 1 then
10580: LD_VAR 0 1
10584: PPUSH
10585: CALL_OW 266
10589: PUSH
10590: LD_INT 1
10592: EQUAL
10593: IFFALSE 10672
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 0 ;
10595: LD_ADDR_EXP 39
10599: PUSH
10600: LD_EXP 39
10604: PUSH
10605: LD_INT 0
10607: ADD
10608: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10609: LD_ADDR_EXP 39
10613: PUSH
10614: LD_EXP 39
10618: PUSH
10619: LD_VAR 0 1
10623: PPUSH
10624: CALL_OW 250
10628: ADD
10629: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10630: LD_ADDR_EXP 39
10634: PUSH
10635: LD_EXP 39
10639: PUSH
10640: LD_VAR 0 1
10644: PPUSH
10645: CALL_OW 251
10649: ADD
10650: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10651: LD_ADDR_EXP 39
10655: PUSH
10656: LD_EXP 39
10660: PUSH
10661: LD_VAR 0 1
10665: PPUSH
10666: CALL_OW 254
10670: ADD
10671: ST_TO_ADDR
// end ; if GetBType ( unit ) = 3 then
10672: LD_VAR 0 1
10676: PPUSH
10677: CALL_OW 266
10681: PUSH
10682: LD_INT 3
10684: EQUAL
10685: IFFALSE 10764
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 2 ;
10687: LD_ADDR_EXP 39
10691: PUSH
10692: LD_EXP 39
10696: PUSH
10697: LD_INT 2
10699: ADD
10700: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10701: LD_ADDR_EXP 39
10705: PUSH
10706: LD_EXP 39
10710: PUSH
10711: LD_VAR 0 1
10715: PPUSH
10716: CALL_OW 250
10720: ADD
10721: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10722: LD_ADDR_EXP 39
10726: PUSH
10727: LD_EXP 39
10731: PUSH
10732: LD_VAR 0 1
10736: PPUSH
10737: CALL_OW 251
10741: ADD
10742: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10743: LD_ADDR_EXP 39
10747: PUSH
10748: LD_EXP 39
10752: PUSH
10753: LD_VAR 0 1
10757: PPUSH
10758: CALL_OW 254
10762: ADD
10763: ST_TO_ADDR
// end ; if GetBType ( unit ) = 5 then
10764: LD_VAR 0 1
10768: PPUSH
10769: CALL_OW 266
10773: PUSH
10774: LD_INT 5
10776: EQUAL
10777: IFFALSE 10856
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 4 ;
10779: LD_ADDR_EXP 39
10783: PUSH
10784: LD_EXP 39
10788: PUSH
10789: LD_INT 4
10791: ADD
10792: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10793: LD_ADDR_EXP 39
10797: PUSH
10798: LD_EXP 39
10802: PUSH
10803: LD_VAR 0 1
10807: PPUSH
10808: CALL_OW 250
10812: ADD
10813: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10814: LD_ADDR_EXP 39
10818: PUSH
10819: LD_EXP 39
10823: PUSH
10824: LD_VAR 0 1
10828: PPUSH
10829: CALL_OW 251
10833: ADD
10834: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10835: LD_ADDR_EXP 39
10839: PUSH
10840: LD_EXP 39
10844: PUSH
10845: LD_VAR 0 1
10849: PPUSH
10850: CALL_OW 254
10854: ADD
10855: ST_TO_ADDR
// end ; end ; end ;
10856: PPOPN 1
10858: END
// on BuildingComplete ( building ) do var i ;
10859: LD_INT 0
10861: PPUSH
// begin if GetSide ( building ) = randomedColors [ 1 ] then
10862: LD_VAR 0 1
10866: PPUSH
10867: CALL_OW 255
10871: PUSH
10872: LD_EXP 41
10876: PUSH
10877: LD_INT 1
10879: ARRAY
10880: EQUAL
10881: IFFALSE 11127
// begin if GetBType ( building ) = 0 or GetBType ( building ) = 2 or GetBType ( building ) = 4 then
10883: LD_VAR 0 1
10887: PPUSH
10888: CALL_OW 266
10892: PUSH
10893: LD_INT 0
10895: EQUAL
10896: PUSH
10897: LD_VAR 0 1
10901: PPUSH
10902: CALL_OW 266
10906: PUSH
10907: LD_INT 2
10909: EQUAL
10910: OR
10911: PUSH
10912: LD_VAR 0 1
10916: PPUSH
10917: CALL_OW 266
10921: PUSH
10922: LD_INT 4
10924: EQUAL
10925: OR
10926: IFFALSE 10937
// ComUpgrade ( building ) ;
10928: LD_VAR 0 1
10932: PPUSH
10933: CALL_OW 146
// if ruDestroyedBuildings > 0 then
10937: LD_EXP 39
10941: PUSH
10942: LD_INT 0
10944: GREATER
10945: IFFALSE 11019
// begin ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
10947: LD_ADDR_EXP 39
10951: PUSH
10952: LD_EXP 39
10956: PPUSH
10957: LD_INT 1
10959: PPUSH
10960: CALL_OW 3
10964: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
10965: LD_ADDR_EXP 39
10969: PUSH
10970: LD_EXP 39
10974: PPUSH
10975: LD_INT 1
10977: PPUSH
10978: CALL_OW 3
10982: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
10983: LD_ADDR_EXP 39
10987: PUSH
10988: LD_EXP 39
10992: PPUSH
10993: LD_INT 1
10995: PPUSH
10996: CALL_OW 3
11000: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
11001: LD_ADDR_EXP 39
11005: PUSH
11006: LD_EXP 39
11010: PPUSH
11011: LD_INT 1
11013: PPUSH
11014: CALL_OW 3
11018: ST_TO_ADDR
// end ; if GetBType ( building ) = b_bunker then
11019: LD_VAR 0 1
11023: PPUSH
11024: CALL_OW 266
11028: PUSH
11029: LD_INT 32
11031: EQUAL
11032: IFFALSE 11073
// AddComPlaceWeapon ( building , [ 44 , 43 , 46 , 45 ] [ Rand ( 1 , 4 ) ] ) ;
11034: LD_VAR 0 1
11038: PPUSH
11039: LD_INT 44
11041: PUSH
11042: LD_INT 43
11044: PUSH
11045: LD_INT 46
11047: PUSH
11048: LD_INT 45
11050: PUSH
11051: EMPTY
11052: LIST
11053: LIST
11054: LIST
11055: LIST
11056: PUSH
11057: LD_INT 1
11059: PPUSH
11060: LD_INT 4
11062: PPUSH
11063: CALL_OW 12
11067: ARRAY
11068: PPUSH
11069: CALL_OW 208
// if GetBType ( building ) = b_turret then
11073: LD_VAR 0 1
11077: PPUSH
11078: CALL_OW 266
11082: PUSH
11083: LD_INT 33
11085: EQUAL
11086: IFFALSE 11127
// AddComPlaceWeapon ( building , [ 44 , 43 , 46 , 45 ] [ Rand ( 1 , 4 ) ] ) ;
11088: LD_VAR 0 1
11092: PPUSH
11093: LD_INT 44
11095: PUSH
11096: LD_INT 43
11098: PUSH
11099: LD_INT 46
11101: PUSH
11102: LD_INT 45
11104: PUSH
11105: EMPTY
11106: LIST
11107: LIST
11108: LIST
11109: LIST
11110: PUSH
11111: LD_INT 1
11113: PPUSH
11114: LD_INT 4
11116: PPUSH
11117: CALL_OW 12
11121: ARRAY
11122: PPUSH
11123: CALL_OW 208
// end ; end ; end_of_file
11127: PPOPN 2
11129: END
// every 0 0$1 do
11130: GO 11132
11132: DISABLE
// begin ResAllTechs ( randomedColors [ 1 ] , rulab1 , 3 ) ;
11133: LD_EXP 41
11137: PUSH
11138: LD_INT 1
11140: ARRAY
11141: PPUSH
11142: LD_INT 28
11144: PPUSH
11145: LD_INT 3
11147: PPUSH
11148: CALL 5155 0 3
// ResAllTechs ( randomedColors [ 1 ] , rulab2 , 3 ) ;
11152: LD_EXP 41
11156: PUSH
11157: LD_INT 1
11159: ARRAY
11160: PPUSH
11161: LD_INT 29
11163: PPUSH
11164: LD_INT 3
11166: PPUSH
11167: CALL 5155 0 3
// end ;
11171: END
// every 0 0$3 trigger FilterAllUnits ( [ f_side , randomedColors [ 1 ] ] ) > 0 do
11172: LD_INT 22
11174: PUSH
11175: LD_EXP 41
11179: PUSH
11180: LD_INT 1
11182: ARRAY
11183: PUSH
11184: EMPTY
11185: LIST
11186: LIST
11187: PPUSH
11188: CALL_OW 69
11192: PUSH
11193: LD_INT 0
11195: GREATER
11196: IFFALSE 11319
11198: GO 11200
11200: DISABLE
// begin EnterBunkerOrBarrack ( randomedColors [ 1 ] , RussianBase ) ;
11201: LD_EXP 41
11205: PUSH
11206: LD_INT 1
11208: ARRAY
11209: PPUSH
11210: LD_INT 1
11212: PPUSH
11213: CALL 5413 0 2
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot2 , RepairArea1 , rudestroyedBuildings ) ;
11217: LD_EXP 41
11221: PUSH
11222: LD_INT 1
11224: ARRAY
11225: PPUSH
11226: LD_INT 64
11228: PPUSH
11229: LD_INT 2
11231: PPUSH
11232: LD_EXP 39
11236: PPUSH
11237: CALL 5816 0 4
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot1 , RepairArea2 , rudestroyedBuildings ) ;
11241: LD_EXP 41
11245: PUSH
11246: LD_INT 1
11248: ARRAY
11249: PPUSH
11250: LD_INT 16
11252: PPUSH
11253: LD_INT 3
11255: PPUSH
11256: LD_EXP 39
11260: PPUSH
11261: CALL 5816 0 4
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot3 , RepairArea3 , rudestroyedBuildings ) ;
11265: LD_EXP 41
11269: PUSH
11270: LD_INT 1
11272: ARRAY
11273: PPUSH
11274: LD_INT 20
11276: PPUSH
11277: LD_INT 4
11279: PPUSH
11280: LD_EXP 39
11284: PPUSH
11285: CALL 5816 0 4
// HealUnitInBase ( randomedColors [ 1 ] , RussianBase , RussianBase , [ rulab1 , rulab2 ] ) ;
11289: LD_EXP 41
11293: PUSH
11294: LD_INT 1
11296: ARRAY
11297: PPUSH
11298: LD_INT 1
11300: PPUSH
11301: LD_INT 1
11303: PPUSH
11304: LD_INT 28
11306: PUSH
11307: LD_INT 29
11309: PUSH
11310: EMPTY
11311: LIST
11312: LIST
11313: PPUSH
11314: CALL 6207 0 4
// enable ;
11318: ENABLE
// end ;
11319: END
// every 5 5$0 + 5 5$0 do
11320: GO 11322
11322: DISABLE
// begin AddComConstruct ( rufab1 , 22 , 1 , 1 , [ 44 , 43 , 42 ] [ Rand ( 1 , 3 ) ] ) ;
11323: LD_INT 96
11325: PPUSH
11326: LD_INT 22
11328: PPUSH
11329: LD_INT 1
11331: PPUSH
11332: LD_INT 1
11334: PPUSH
11335: LD_INT 44
11337: PUSH
11338: LD_INT 43
11340: PUSH
11341: LD_INT 42
11343: PUSH
11344: EMPTY
11345: LIST
11346: LIST
11347: LIST
11348: PUSH
11349: LD_INT 1
11351: PPUSH
11352: LD_INT 3
11354: PPUSH
11355: CALL_OW 12
11359: ARRAY
11360: PPUSH
11361: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 1 , 1 , [ 44 , 43 , 42 ] [ Rand ( 1 , 3 ) ] ) ;
11365: LD_INT 96
11367: PPUSH
11368: LD_INT 22
11370: PPUSH
11371: LD_INT 1
11373: PPUSH
11374: LD_INT 1
11376: PPUSH
11377: LD_INT 44
11379: PUSH
11380: LD_INT 43
11382: PUSH
11383: LD_INT 42
11385: PUSH
11386: EMPTY
11387: LIST
11388: LIST
11389: LIST
11390: PUSH
11391: LD_INT 1
11393: PPUSH
11394: LD_INT 3
11396: PPUSH
11397: CALL_OW 12
11401: ARRAY
11402: PPUSH
11403: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 1 , 1 , [ 44 , 43 , 42 ] [ Rand ( 1 , 3 ) ] ) ;
11407: LD_INT 96
11409: PPUSH
11410: LD_INT 22
11412: PPUSH
11413: LD_INT 1
11415: PPUSH
11416: LD_INT 1
11418: PPUSH
11419: LD_INT 44
11421: PUSH
11422: LD_INT 43
11424: PUSH
11425: LD_INT 42
11427: PUSH
11428: EMPTY
11429: LIST
11430: LIST
11431: LIST
11432: PUSH
11433: LD_INT 1
11435: PPUSH
11436: LD_INT 3
11438: PPUSH
11439: CALL_OW 12
11443: ARRAY
11444: PPUSH
11445: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 1 , 3 , [ 46 , 45 ] [ Rand ( 1 , 2 ) ] ) ;
11449: LD_INT 42
11451: PPUSH
11452: LD_INT 24
11454: PPUSH
11455: LD_INT 1
11457: PPUSH
11458: LD_INT 3
11460: PPUSH
11461: LD_INT 46
11463: PUSH
11464: LD_INT 45
11466: PUSH
11467: EMPTY
11468: LIST
11469: LIST
11470: PUSH
11471: LD_INT 1
11473: PPUSH
11474: LD_INT 2
11476: PPUSH
11477: CALL_OW 12
11481: ARRAY
11482: PPUSH
11483: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 1 , 3 , [ 46 , 45 ] [ Rand ( 1 , 2 ) ] ) ;
11487: LD_INT 42
11489: PPUSH
11490: LD_INT 24
11492: PPUSH
11493: LD_INT 1
11495: PPUSH
11496: LD_INT 3
11498: PPUSH
11499: LD_INT 46
11501: PUSH
11502: LD_INT 45
11504: PUSH
11505: EMPTY
11506: LIST
11507: LIST
11508: PUSH
11509: LD_INT 1
11511: PPUSH
11512: LD_INT 2
11514: PPUSH
11515: CALL_OW 12
11519: ARRAY
11520: PPUSH
11521: CALL_OW 185
// AddComConstruct ( rufab2 , 24 , 1 , 3 , [ 46 , 45 ] [ Rand ( 1 , 2 ) ] ) ;
11525: LD_INT 42
11527: PPUSH
11528: LD_INT 24
11530: PPUSH
11531: LD_INT 1
11533: PPUSH
11534: LD_INT 3
11536: PPUSH
11537: LD_INT 46
11539: PUSH
11540: LD_INT 45
11542: PUSH
11543: EMPTY
11544: LIST
11545: LIST
11546: PUSH
11547: LD_INT 1
11549: PPUSH
11550: LD_INT 2
11552: PPUSH
11553: CALL_OW 12
11557: ARRAY
11558: PPUSH
11559: CALL_OW 185
// enable ;
11563: ENABLE
// end ;
11564: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) >= FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_factory ] , [ f_ok ] ] ) * 3 do
11565: LD_INT 22
11567: PUSH
11568: LD_EXP 41
11572: PUSH
11573: LD_INT 1
11575: ARRAY
11576: PUSH
11577: EMPTY
11578: LIST
11579: LIST
11580: PUSH
11581: LD_INT 21
11583: PUSH
11584: LD_INT 2
11586: PUSH
11587: EMPTY
11588: LIST
11589: LIST
11590: PUSH
11591: LD_INT 24
11593: PUSH
11594: LD_INT 250
11596: PUSH
11597: EMPTY
11598: LIST
11599: LIST
11600: PUSH
11601: EMPTY
11602: LIST
11603: LIST
11604: LIST
11605: PPUSH
11606: CALL_OW 69
11610: PUSH
11611: LD_INT 22
11613: PUSH
11614: LD_EXP 41
11618: PUSH
11619: LD_INT 1
11621: ARRAY
11622: PUSH
11623: EMPTY
11624: LIST
11625: LIST
11626: PUSH
11627: LD_INT 30
11629: PUSH
11630: LD_INT 3
11632: PUSH
11633: EMPTY
11634: LIST
11635: LIST
11636: PUSH
11637: LD_INT 50
11639: PUSH
11640: EMPTY
11641: LIST
11642: PUSH
11643: EMPTY
11644: LIST
11645: LIST
11646: LIST
11647: PPUSH
11648: CALL_OW 69
11652: PUSH
11653: LD_INT 3
11655: MUL
11656: GREATEREQUAL
11657: IFFALSE 11676
11659: GO 11661
11661: DISABLE
// begin EnemyVehicleAttack ( randomedColors [ 1 ] ) ;
11662: LD_EXP 41
11666: PUSH
11667: LD_INT 1
11669: ARRAY
11670: PPUSH
11671: CALL 6826 0 1
// enable ;
11675: ENABLE
// end ; end_of_file
11676: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
11677: LD_INT 0
11679: PPUSH
11680: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
11681: LD_ADDR_VAR 0 2
11685: PUSH
11686: LD_STRING #Multi1x1-Time
11688: PUSH
11689: LD_OWVAR 1
11693: PUSH
11694: EMPTY
11695: LIST
11696: LIST
11697: ST_TO_ADDR
// end ;
11698: LD_VAR 0 1
11702: RET
// every 0 0$1 do
11703: GO 11705
11705: DISABLE
// begin ShowTimer ;
11706: CALL 11677 0 0
// enable ;
11710: ENABLE
// end ; end_of_file
11711: END
